我正在创建一个Web应用程序,无论如何都要进行自己的测试以确认,但是想知道是否有人在绑定/解除绑定时有这方面的经验等.例如我想首先销毁当前内容容器的事件和子项的事件,然后在将新内容加载到DIV中时,基于远程脚本加载并附加新事件.我可以遍历,但想想它是否已经确实很好.只要我将事件范围保持在内容DIV中,这种方法就可以在保持复杂性方面进行扩展.
根据要求,我正在解释我正在做的事情背后的目的.
我正在寻找创建一个可维护的AJAX Web应用程序.想象一下,您可以向其中添加数百个页面/脚本,并且当您请求新内容时,被调用者不需要知道除URL之外的任何内容.这就是我想要的.我已经使用iframe覆盖完成了这项工作并且运行良好但是我主要关心的是做纯AJAX是在不需要它之后在内存中留下的代码,例如事件和闭包引用等.在这方面,iframe覆盖有其优点,因为没有太多考虑参与其中但每次加载新网址的速度较慢,如果您希望页面的某些部分更新,则该方法无法很好地集成.
所以思考过程就是创建一种方法,让父DIV通过jQuery加载方法注入新的HTML.加载方法也具有执行脚本的巨大副作用.因此,如果我使用这种方法,我需要创建一个这样做的系统,它不会使浏览器膨胀并留下奇怪的事件行为等.这可能是另一个问题.
UPDATE
我在回复投票看到这个弹出窗口后回答了我的问题.如果使用事件冒泡方法在父级别附加事件,则这实际上不是问题.请参阅下面的答案.
快速回答是否定的,事实并非如此。
.off() 就像 .unbind() 一样,它从您选择的任何 jquery 包装对象中删除所选类型的所有事件处理程序。如果要从更多元素中删除处理程序,请选择更多元素。
编辑评论:我假设既然你提到了递归,你的意思是“后代”而不是“孩子”。在这种情况下(正如您的评论所暗示的)“*”正是您正在寻找的。jsFiddle
$('selector, selector *')
Run Code Online (Sandbox Code Playgroud)
如果这看起来“代价高昂”,那就应该如此。考虑这样的计划几乎可以肯定是时候重新思考这个问题了。