为什么jQuery的空功能如此复杂? [英] Why is the jquery empty function so complicated?

查看:101
本文介绍了为什么jQuery的空功能如此复杂?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我查看了 .empty()函数的 jQuery 源代码:

  empty:function(){
for(var i = 0,elem;(elem = this [i])!= null; i ++ ){
//删除元素节点并防止内存泄漏
if(elem.nodeType === 1){
jQuery.cleanData(elem.getElementsByTagName(*));
}

//删除所有剩余的节点
while(elem.firstChild){
elem.removeChild(elem.firstChild);


$ / code $ / pre

难道这不是简单得多将 innerHTML 更改为一个空字符串:

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


<



描述:从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.

这篇关于为什么jQuery的空功能如此复杂?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆