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

JQuery-如何将change()函数绑定到动态创建的<select>?

  •  4
  • Tony  · 技术社区  · 15 年前

    我通过JS在DOM上创建元素。问题是,如何为每个新创建的元素分配.change()函数?

    4 回复  |  直到 15 年前
        1
  •  7
  •   lonesomeday    15 年前

    甚至比 .live() ,从性能的角度来看,是 .delegate() . 这和 .live() :它使用了一种称为事件冒泡(event bubbling)的方法,这意味着当在DOM元素上触发事件时,该元素的父元素都会收到事件通知。 delegate 但是,它有更好的语法和显著的性能优势。

    $('#parentElement').delegate('select.yourSelectClass', 'change', function() {
        // do your processing here
    });
    

    #parentElement 可以是与所有 select 要添加的元素。这可能是 document.body ,但DOM树中可能还有另一个元素可以绑定到。

    select.yourSelectClass 意味着此处理程序将只在具有类的select元素上触发 yourSelectClass . 您可以更改此选择器以使用任何其他jQuery选择器语法。

        2
  •  3
  •   Justin Niessner    15 年前

    jQuery.live() 做你的朋友:

    $('.yourSelectClass').live('change', function(event){
        // Handle the Change event here.
    });
    
        3
  •  1
  •   Andrew Whitaker    15 年前

    试试 live 功能: http://api.jquery.com/live/

        4
  •  0
  •   Adam    15 年前

    Use jQuery live . (1.3版或更高版本)

    $(".classOfJSCreatedElements").live('change',
    function(event){
    //do stuff
    });
    

    如果必须使用旧版本的jQuery,请使用 livequery plug-in

    资料来源: jQuery FAQ