【发布时间】:2011-12-09 22:17:12
【问题描述】:
当我使用 AJAX 动态加载 JQuery 时,具有现有事件的元素会触发多次。
基本上,我有一个名为“myjs.js”的文件,它包含我所有的 JQuery,并在页面加载时包含在内,因此为元素设置事件等。
现在,当用户触发诸如发布新评论之类的事件时,它会发送(通过 Ajax)评论,然后返回一个包含新评论、编辑评论、回复等的页面。显然是在首次加载 myjs.js 时它没有为新加载的元素创建任何事件。因此,我在使用 AJAX 返回的页面中包含了myjs.js。
由于页面已经加载了myjs.js,当返回包含myjs.js的Ajax页面时,它会在页面已经加载的元素上添加另一个事件。
我已经试过了
$('*').unbind();
但这引起了一些奇怪的影响。
那么关于动态加载 JQuery 同时不影响元素已经存在的任何事件的任何想法?
【问题讨论】:
-
查看
.on(),如果您使用的是 1.7 或更高版本,或者查看.delegate(),如果您低于 1.7 -
使用
live或delegate方法为将来的(AJAX 生成的?)元素(或on用于jQuery 1.7+)绑定事件监听器。另见:api.jquery.com/live -
听起来您可能想研究委派事件,以便事件在不注入 JavaScript 的情况下也适用于新元素。
-
UserB,这不是代码问题。谢谢 PeeHaa 和 Rob,我会调查这些,非常感谢。
标签: javascript jquery javascript-events