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

时间:2010-11-16 18:07:03

标签: jquery

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

4 个答案:

答案 0 :(得分:7)

从绩效角度来看,甚至比.live()更好,是.delegate()。这与.live()的工作方式相同:它使用称为事件冒泡的东西,这意味着当在DOM元素上触发事件时,该元素的父元素都会被通知该事件。但是,delegate具有更好的语法和显着的性能优势。

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

#parentElement可以是与您要添加的所有select元素的公共祖先元素匹配的任何选择器。这可能是document.body,但是DOM树中可能还有另一个可以绑定的元素。

select.yourSelectClass表示此处理程序仅在具有类yourSelectClass的select元素上触发。您可以根据需要更改此选择器以使用任何其他jQuery选择器语法。

答案 1 :(得分:3)

jQuery.live()成为你的朋友:

$('.yourSelectClass').live('change', function(event){
    // Handle the Change event here.
});

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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

来源:jQuery FAQ