Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一种提高清理DOM元素内容速度的方法_Javascript_Jquery_Performance - Fatal编程技术网

Javascript 一种提高清理DOM元素内容速度的方法

Javascript 一种提高清理DOM元素内容速度的方法,javascript,jquery,performance,Javascript,Jquery,Performance,那里! 在我的AJAX应用程序中,页面中有很多内容。因此,当用户更改页面时,我必须清除页面div中以前的内容。使用jQuery:cont.empty()或cont.html(“”)清除DOM元素内容以及相关的数据、事件等。但是由于内容太大,页面的性能急剧下降。有时在fast机器上清除内容物需要500毫秒。我找到了一种使用纯JavaScript函数超快速清除容器的方法: function empty(element) { var i; for (i = element.childN

那里! 在我的AJAX应用程序中,页面中有很多内容。因此,当用户更改页面时,我必须清除页面div中以前的内容。使用jQuery:cont.empty()或cont.html(“”)清除DOM元素内容以及相关的数据、事件等。但是由于内容太大,页面的性能急剧下降。有时在fast机器上清除内容物需要500毫秒。我找到了一种使用纯JavaScript函数超快速清除容器的方法:

function empty(element) {
    var i;
    for (i = element.childNodes.length - 1; i >= 0; i--)
    element.removeChild(element.childNodes[i]);
}
不幸的是,这种方法会产生内存泄漏,因为它不会清除缓存中关联的元素jQuery数据

你能给我一个意见或方法,将清除内容迅速,防止内存泄漏


例如,是否有一种方法可以使用本机函数快速清除内容,并在某个点(interval函数)循环$.cache并删除存储的缺少的处理程序?类似于垃圾收集器。

在容器中的元素上定义事件处理程序时,可以使用过滤器。例如,您可以使用:

$(document).on("click", "#item1", function() {
    ...
});
而不是:

$("#item1").on("click", function() {
    ...
});

已尝试将父元素设置为显示:无,然后清除内容并完成设置回显示?var parent=cont.parent();继续删除();parent.appendChild(newcont)这没有帮助。empty()、.html(“”)和.remove()同样慢。我已经试着隐藏/清空/显示容器,但没有改变。@n_ilievski:你怎么会有这么多内容要清除?好吧,jqgrid有100行,行操作等足以注意到清除容器的速度很慢。@mplungjan我认为这是因为事件处理程序没有绑定到元素本身,如果您在不首先清理事件处理程序的情况下删除它们,就不会发生内存泄漏。@AnthonyGrist确实如此,但可能有许多其他绑定导致泄漏,而不是点击事件handler@mplungjan正确的。我不同意,这似乎就是背后的意图。来自其他脚本的数据、插件和可能的事件处理程序都会导致问题。如果我的应用程序很小,你是对的。但是页面中有许多依赖插件的控件,因此不可能重写应用程序中的所有内容。