Jquery Difference.html(";)与空()

Jquery Difference.html(";)与空(),jquery,performance,Jquery,Performance,在Jquery中,它们之间的区别是什么 $('#divid').html(""); 及 两者在jQuery.js内部都做相同的操作吗 以及使用哪一个更好。从html函数的 if ( elem ) { this.empty().append( value ); } 所以html调用empty。因此,简单地调用empty会(稍微)快一些。当然,它更具可读性。我在JSperf中尝试了以下内容,并使用$('divid').empty()找到了答

在Jquery中,它们之间的区别是什么

$('#divid').html("");

两者在jQuery.js内部都做相同的操作吗

以及使用哪一个更好。

html
函数的

        if ( elem ) {
            this.empty().append( value );
        }

所以
html
调用
empty
。因此,简单地调用
empty
会(稍微)快一些。当然,它更具可读性。

我在JSperf中尝试了以下内容,并使用$('divid').empty()找到了答案:;更好

T认为
.empty()
更快。是
.empty()

jQuery
.html(“”)是源代码:

html: function( value ) {
    return access( this, function( value ) {
        var elem = this[ 0 ] || {},
            i = 0,
            l = this.length;

        if ( value === undefined && elem.nodeType === 1 ) {
            return elem.innerHTML;
        }

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

            value = jQuery.htmlPrefilter( value );

            try {
                for ( ; i < l; i++ ) {
                    elem = this[ i ] || {};

                    // Remove element nodes and prevent memory leaks
                    if ( elem.nodeType === 1 ) {
                        jQuery.cleanData( getAll( elem, false ) );
                        elem.innerHTML = value;
                    }
                }

                elem = 0;

            // If using innerHTML throws an exception, use the fallback method
            } catch ( e ) {}
        }

        if ( elem ) {
            this.empty().append( value );
        }
    }, null, value, arguments.length );
}
html:函数(值){
返回访问权限(此,函数(值){
var elem=this[0]|{},
i=0,
l=此长度;
if(值===undefined&&elem.nodeType==1){
返回elem.innerHTML;
}
//看看我们是否可以走捷径,只使用innerHTML
if(typeof value==“string”&&!rnoInnerhtml.test(value)&&
!wrapMap[(rtagName.exec(value)| |[“”,“”])[1].toLowerCase()]{
value=jQuery.htmlPrefilter(值);
试一试{
对于(;i

很明显,你可以选择你最好的。

重复标记应该包括一个指向现存问题的链接。
。empty()
要快得多:
。empty()
是老板!快得多:经过7年多的JS开发,我终于了解到了这一点#facepalm实现的
html
远不止此,如果我正确解释了它,当你用空字符串调用
html
时,它甚至都不会运行此代码。
empty: function() {
    var elem,
        i = 0;

    for ( ; ( elem = this[ i ] ) != null; i++ ) {
        if ( elem.nodeType === 1 ) {

            // Prevent memory leaks
            jQuery.cleanData( getAll( elem, false ) );

            // Remove any remaining nodes
            elem.textContent = "";
        }
    }

    return this;
}
html: function( value ) {
    return access( this, function( value ) {
        var elem = this[ 0 ] || {},
            i = 0,
            l = this.length;

        if ( value === undefined && elem.nodeType === 1 ) {
            return elem.innerHTML;
        }

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

            value = jQuery.htmlPrefilter( value );

            try {
                for ( ; i < l; i++ ) {
                    elem = this[ i ] || {};

                    // Remove element nodes and prevent memory leaks
                    if ( elem.nodeType === 1 ) {
                        jQuery.cleanData( getAll( elem, false ) );
                        elem.innerHTML = value;
                    }
                }

                elem = 0;

            // If using innerHTML throws an exception, use the fallback method
            } catch ( e ) {}
        }

        if ( elem ) {
            this.empty().append( value );
        }
    }, null, value, arguments.length );
}