我在 DOM 元素上编写了 jQuery 事件处理程序,这些元素尚未在页面中,但可能会异步加载到页面中。我观察到的是,这些事件处理程序似乎没有意识到一些新元素已添加到 DOM 并且它们需要在触发时对它们采取行动。
我的观察是否正确?如何实现此功能?
最佳答案
如果您希望事件处理程序处理动态添加的内容,您需要使用on
$(document).on("click", "someCssSelector", function(){
//your code here
});
当然,这会导致您页面上任何位置的所有点击都被监视。为了提高效率,看看您是否可以构建您的页面,以便所有这些您要处理其 click
事件的元素都在 一个 容器中。即,如果所有这些元素都将被添加到一个 id 为 foo
的 div 中,您可以更有效地编写上面的代码作为
$("#foo").on("click", "someCssSelector", function(){
//your code here
});
如果你使用的是 jQuery < 1.7,你会使用委托(delegate)
$(document).delegate("someCssSelector", "click", function(){
//your code here
});
关于javascript - jquery 函数不适用于异步加载的 dom 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352853/