我在尚不在页面中但可能异步加载到页面中的 DOM* 元素上编写了 jQuery 事件处理程序。我观察到的是,这些事件处理程序似乎不认识到 DOM 中添加了一些新元素,并且它们需要在触发时对其进行操作。 ***
我的观察正确吗?如何实现此功能?
如果希望事件处理程序处理动态添加的内容,则需要使用 on
on
$(document).on("click", "someCssSelector", function(){ //your code here });
当然,这将导致观看您页面上任何位置的所有点击。为了提高效率,请查看是否可以构造页面,以便将click要处理其事件的所有这些元素都放在 一个 容器中。也就是说,如果所有这些元素都将添加到ID为的div中foo,则可以更有效地将上述内容编写为
click
foo
$("#foo").on("click", "someCssSelector", function(){ //your code here });
如果您使用的是jQuery <1.7以下版本,则应使用委托
$(document).delegate("someCssSelector", "click", function(){ //your code here });