Jquery差异.html(“”)vs .empty()

在Jquery之间有什么区别

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

 $('#divid').empty(); 

是否在jQuery.js 内部进行相同的操作?

哪一个更好用。

我认为.empty()更快。 这是.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; } 

这是jQuery .html("")源代码:

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

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

我在JSperf中尝试了以下内容,并发现使用$(’#divid’)。empty(); 更好

在此处输入图像描述

html函数的源代码 ,以及许多其他的东西:

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

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