在“empty”函数的jquery文档中(http://api.jquery.com/empty/)有以下声明:
"To avoid memory leaks, jQuery removes other constructs such as data and event handlers
from the child elements before removing the elements themselves."
文本显示:“... jQuery 从 !C H I L D! 元素中删除事件处理程序...”。但我希望事件处理程序也从 div 标签中删除 ($("#mydiv").empty)。我知道有“删除”功能,但我的目的是不删除 div 标签。完成此任务的最佳方法是什么?
另一件事是:
当他们说“删除事件处理程序”时。他们只删除用“bind”创建的构造还是也删除用“delegate”创建的构造?
提前非常感谢
最佳答案
要从元素中删除所有绑定(bind)的事件处理程序,您可以将特殊值 "*"
传递给 off()方法:
$("#mydiv").empty().off("*");
当文档说删除事件处理程序
时,它仅涉及绑定(bind)事件处理程序,而不是委托(delegate)事件处理程序,因为它们绑定(bind)到不受删除影响的祖先元素(或文档本身)。
如果稍后恢复删除的元素,这允许委托(delegate)处理程序继续按预期工作。
关于jquery 空函数和事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11609053/