一尘不染

jQuery函数不适用于异步加载的dom元素

ajax

我在尚不在页面中但可能异步加载到页面中的 DOM* 元素上编写了 jQuery 事件处理程序。我观察到的是,这些事件处理程序似乎不认识到
DOM 中添加了一些新元素,并且它们需要在触发时对其进行操作。
***

我的观察正确吗?如何实现此功能?


阅读 370

收藏
2020-07-26

共1个答案

一尘不染

如果希望事件处理程序处理动态添加的内容,则需要使用 on

$(document).on("click", "someCssSelector", function(){
    //your code here
});

当然,这将导致观看您页面上任何位置的所有点击。为了提高效率,请查看是否可以构造页面,以便将click要处理其事件的所有这些元素都放在 一个
容器中。也就是说,如果所有这些元素都将添加到ID为的div中foo,则可以更有效地将上述内容编写为

$("#foo").on("click", "someCssSelector", function(){
    //your code here
});

如果您使用的是jQuery <1.7以下版本,则应使用委托

$(document).delegate("someCssSelector", "click", function(){
    //your code here
});
2020-07-26