将点击事件添加到" body"上的元素在IE8中导致内存泄漏

时间:2015-10-09 13:46:10

标签: jquery memory-leaks internet-explorer-8 jquery-click-event

在我的项目工作中,我们正面临IE8中的内存泄漏,因为我不知道发生了什么,我做了一些试验,发现当我包含这块时,泄漏就发生了代码

$("body").off().on('#CancelTransfer',"click", function (e) { });

我不确定为什么会出现这个问题,但当我将其更改为

$('#CancelTransfer').click(function(e){});

内存不会增加,在以前的情况下,iexplorer的内存使用量逐渐增加到崩溃前的1.7gb。

我的问题是为什么会发生这种情况,我在这里所做的只是以不同的方式添加事件。

这里要注意的另一件事是我确实在其他类上使用类似的事件调用方式,似乎没有任何问题

$("body").off().on(".subMenu", "click", function (e) {
        sessionStorage.setItem("subMenu", $(this).attr('data-submenu')); //need to remove all dependentcases
    });

我对内存泄漏的概念真的很陌生,如果有人能向我澄清为什么会发生这种情况,并建议解决方法真的很棒。

感谢。

编辑:只是为了清除这一点,在最后一种情况下我将点击事件添加到" .SubMenu"它没有给出任何内存泄漏,因为没有该类的元素。但是,如果假设元素存在,那么它也会在后一种情况下给出问题。

1 个答案:

答案 0 :(得分:0)

使用 $('body')。on('click',function(){});