且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为什么jQuery的空功能如此复杂?

更新时间:2023-11-05 21:29:28

描述:从DOM中移除匹配元素集合中的所有子节点。 >请仔细考虑 .data() expandos和事件处理程序...通过仅删除DOM,您就会每次创建内存泄漏。


I looked at the jQuery source code for the .empty() function:

empty: function() {
        for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
            // Remove element nodes and prevent memory leaks
            if ( elem.nodeType === 1 ) {
                jQuery.cleanData( elem.getElementsByTagName("*") );
            }

            // Remove any remaining nodes
            while ( elem.firstChild ) {
                elem.removeChild( elem.firstChild );
            }
        }​

Couldn't it be a lot simpler with just changing the innerHTML to an empty string:

empty: function() {
        for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
                elem.innerHTML = "";
        }​

The empty docs:

Description: Remove all child nodes of the set of matched elements from the DOM.

Just think about .data() expandos and event handlers... By just removing the DOM, you would create memory leaks every time.