例如,如果我有与结合到它下面的事件的链接:

$("a.d").bind("click", this, onDelete);

和后做的:

$("a.d").remove();

是罚款?或者它会导致内存泄漏,我需要调用解除绑定1?

感谢您的帮助。

有帮助吗?

解决方案

我没有测试,但是相信移除元素将其解除绑定的事件处理程序。我来从 jQuery的API文档其中规定,如果要移动(搜索删除)这个结论从DOM的一部分到另一部分,一个元素:

$("#foo").remove().appendTo("#bar");

应写为

$("#foo").appendTo("#bar");

,以避免丢失的事件处理程序。

其他提示

从jQuery的文档为删除()

  

移除来自所有匹配元素   DOM。这并不删除它们   jQuery对象,允许你使用   匹配元素进一步。注意   这个函数开始1.2.2   也将删除所有事件处理程序   并在内部缓存数据。

答案是肯定的,只要该事件被附与jquery。如果喜欢的东西附着“点击”我不相信它会的。

此文章讨论了一些。它还定义了一个递归函数删除所有点击事件的元素,所有的孩子。它将覆盖的onclick所以你覆盖定义jQuery的点击处理程序以及处理程序。

HTTP:/ /www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/

function RecursiveUnbind($jElement) {
    // remove this element's and all of its children's click events
    $jElement.unbind();
    $jElement.removeAttr('onclick');
    $jElement.children().each(function () {
        RecursiveUnbind($(this));
    });
}

要使用的功能在前面的例子中,我们将调用函数传递给它的“容器” DIV作为jQuery对象。

RecursiveUnbind($('#container'));

有关的记录,你不必担心在JavaScript中的内存泄漏。 (寒意人,而不是C ++!)

浏览器的JavaScript引擎管理所有对象,垃圾收集它们。当我说的对象,这意味着事件处理函数也是如此,因为功能也是对象中的JavaScript。

相依:我爱如何一切是在JavaScript的对象:d

干杯!点击 JRH

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top