代码之家  ›  专栏  ›  技术社区  ›  Malice

使用jquery绑定到动态创建的下拉列表中的更改事件

  •  1
  • Malice  · 技术社区  · 14 年前

    我正在使用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 回复  |  直到 14 年前
        1
  •  5
  •   Nick Craver    14 年前

    使用 change 事件而不是 click ,像这样:

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

    在IE里有一个特别的错误 之前 这个 JQuery 1.4.2 释放。在那之前, 改变 在IE中没有正确冒泡 .live() 依赖),这在1.4.2中被修复,因此如果使用该版本或更高版本,这应该可以工作。

        2
  •  3
  •   Community CDub    8 年前

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

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