gpt4 book ai didi

javascript - 性能:jQuery remove() 与 JavaScript removeChild()

转载 作者:搜寻专家 更新时间:2023-11-01 05:12:56 25 4
gpt4 key购买 nike

我有一个包含大约 1,500 行的表。

我正在使用以下 jQuery 代码从 DOM 中删除表格:

$('#myTable').remove();

这大约需要 300 毫秒,造成相当明显的滞后。

用 removeChild() 做同样的事情:

var myTable = $('#myTable')[0] ;
myTable.parentNode.removeChild(myTable);

大约需要 30 毫秒。

我可以轻松使用 removeChild() 版本,但我很困惑为什么 jQuery 的 remove() 会花费这么长时间? removeChild() 版本没有清除 jQuery 的内容吗?

演示:jspref

最佳答案

来自 the documentation :

In addition to the elements themselves, all bound events and jQuery data associated with the elements are removed.

这意味着:

  • 这个函数做了一些额外的工作(主要是为它自己和 child 调用 cleanData)
  • 您通常应该使用它来避免内存泄漏

这在源代码中清楚地出现了:

remove: function( selector, keepData ) {
var elem,
i = 0;

for ( ; (elem = this[i]) != null; i++ ) {
if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
if ( !keepData && elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem ) );
}

if ( elem.parentNode ) {
if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
setGlobalEval( getAll( elem, "script" ) );
}
elem.parentNode.removeChild( elem );
}
}
}

return this;
}

关于javascript - 性能:jQuery remove() 与 JavaScript removeChild(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com