我通过JS在DOM上创建元素。问题是,如何为每个新创建的元素分配.change()函数?
答案 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