jQuery.fn.empty()和jQuery.fn.html(”)有什么区别?

前端之家收集整理的这篇文章主要介绍了jQuery.fn.empty()和jQuery.fn.html(”)有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有什么区别
$("#header").empty()@H_404_3@ 
 

$("#header").html('')@H_404_3@ 
 

另外,我应该使用什么? $(“#header”)。empty()更容易阅读,但是怎么可能比$(“#header”)。html(”)

解决方法

两者之间没有功能上的差异。使用.empty(),因为它更短(更简洁)和更可读。

不要担心性能差异。记住,jQuery不使用,因为它运行速度比香草JavaScript – 它的使用,因为它的写得更快。开发人员的时间远远超过处理器时间。

已经有一个jsPerf来比较相对性能http://jsperf.com/jquery-empty-vs-html.每个单个测试用例显示.empty()更快。

直接从jQuery源:

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 );
        }
    }

    return this;
},html: function( value ) {
    if ( value === undefined ) {
        return this[0] && this[0].nodeType === 1 ?
            this[0].innerHTML.replace(rinlinejQuery,"") :
            null;

    // See if we can take a shortcut and just use innerHTML
    } else if ( typeof value === "string" && !rnocache.test( value ) &&
        (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
        !wrapMap[ (rtagName.exec( value ) || ["",""])[1].toLowerCase() ] ) {

        value = value.replace(rxhtmlTag,"<$1></$2>");

        try {
            for ( var i = 0,l = this.length; i < l; i++ ) {
                // Remove element nodes and prevent memory leaks
                if ( this[i].nodeType === 1 ) {
                    jQuery.cleanData( this[i].getElementsByTagName("*") );
                    this[i].innerHTML = value;
                }
            }

        // If using innerHTML throws an exception,use the fallback method
        } catch(e) {
            this.empty().append( value );
        }

    } else if ( jQuery.isFunction( value ) ) {
        this.each(function(i){
            var self = jQuery( this );

            self.html( value.call(this,i,self.html()) );
        });

    } else {
        this.empty().append( value );
    }

    return this;
},@H_404_3@ 
 

.empty()不必处理检查不同的可能的参数类型;它可以直接下拉到DOM元素。

猜你在找的jQuery相关文章