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

4

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

4个回答

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 选择器语法。


3
jQuery.live()成为你的朋友:
$('.yourSelectClass').live('change', function(event){
    // Handle the Change event here.
});

1
是的,我刚看到了。我使用了 .on。 - Ben_Coding
Live存在性能问题。它监听整个DOM文档的变化,而delegate仅监听从父元素开始的DOM树中的变化。 - Najki

1

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接