在AJAX上刷新所有JavaScript事件都在破坏

时间:2012-11-12 16:56:00

标签: javascript jquery

当用户点击过滤器链接时,我正在进行AJAX调用以替换标题下方的所有内容以及页面页脚上方的所有内容。

问题是在AJAX事件之后,绑定到各种DOM元素的所有JavaScript事件都会中断。这是有意义的,因为那些绑定在一个低得多的模块级示例

$(".innerDiv").on("click",function(){doSomething();}

并且通过替换父容器的内容,这些事件不再受约束。

处理此问题的正确方法是什么?我可以将事件监听器添加到更高的级别,例如

$(document).on("click",".innerDiv",function(){doSomething();}

但是这会导致jQuery中live()函数被弃用的效率低下和问题。

我发现建议的另一个解决方案是在AJAX调用之后重新绑定事件。问题是这是一个我正在处理的相当复杂的页面,它包含许多JavaScript模块,每个模块都有自己的绑定。我如何跟踪每个被绑定的事件?有没有办法从jQuery中访问这些信息?我应该维护我自己的所有元素的数据结构,这些元素都有与它们绑定的事件吗?

在发出AJAX请求之前,我还需要使用“off()”函数取消绑定事件吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在JQuery中可以使用beforeSend http://api.jquery.com/jQuery.ajax/取消绑定事件