javascript - jquery 函数不适用于异步加载的 dom 元素

标签 javascript jquery ajax asynchronous

我在 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/

相关文章:

javascript - SEO ajax 和链接

javascript - 将 Vue.js 输入发送到 Flask 后端?

javascript - 如何在 visual studio 中使用外部 javascript 文件

javascript - 改进图像 slider 动画

javascript - Highstock - 工具提示无法与范围选择器一起正常工作

javascript - bgStretcher 插件 - 多个实例

javascript - 如何用html和js制作无限 map

javascript - jquery onclick 从 div 到 div

javascript - jQuery 触发器点击触发两次

jQuery on click 函数没有任何反应