Jqueryでは、次の違いは何ですか
$('#divid').html("");
と
$('#divid').empty();
両方ともjQuery.js内で内部的に同じ操作を行っていますか?
そしてどちらが使いやすいか。
Jqueryでは、次の違いは何ですか
$('#divid').html("");
と
$('#divid').empty();
両方ともjQuery.js内で内部的に同じ操作を行っていますか?
そしてどちらが使いやすいか。
Tのほう.empty()
が速いと思います。これはのjQueryソースです.empty()
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;
}
そして、これは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 );
}
それは明らかです、あなたはあなたのベストを選ぶことができます。
JSperf で次のことを試してみたところ、 $('#divid').empty(); を使用していることがわかりました。優れている
関数のソースコードから、html
他の多くのものの中で:
if ( elem ) {
this.empty().append( value );
}
を呼び出しhtml
ますempty
。したがって、単純に を呼び出す方が (わずかに) 高速empty
です。もちろん、より読みやすくなっています。