使用jQuery绑定到动态创建的下拉列表中的change事件

时间:2010-10-08 14:23:35

标签: jquery dynamic drop-down-menu

我正在使用jQuery动态创建一些下拉列表。我希望能够在所选下拉列表项更改时触发事件。从这里和其他地方浏览我发现使用live()绑定到下拉列表的更改事件是不可能的,所以我想知道有什么替代方案?我知道可以绑定到click事件但是因为在下拉列表选择可以更改之前发生这种情况对我来说跟踪是否所选项目已经改变是没有用的。

这是我的代码的相关部分。单击任何下拉列表时会触发警报但当然我更喜欢仅在所选项目更改时触发警报。

$(document).ready(function() {
    // Stuff omitted.
    addEventHandlers();
}

function addEventHandlers() {
    // Stuff omitted.
    $('#divReview select').live("click", function(){
        alert('This is where I would like the change event to occur instead.');
    });
}

2 个答案:

答案 0 :(得分:5)

使用change事件代替click,如下所示:

$('#divReview select').live("change", function(){

jQuery 1.4.2 版本 在此之前,change在IE中没有正确冒泡(.live()依赖),这已在1.4.2中修复,因此如果使用该版本或更高版本,则应该可以使用。

答案 1 :(得分:3)

经过一番搜索,我遇到了this问题,这似乎是一个类似的问题。我将我的jQuery方法改为this,它在IE8上按预期工作:

$('body').delegate('#divReview select', 'change', function() {
    alert('Change event triggered.');
});