Подтвердить что ты не робот

JQuery Difference.html("") vs .empty()

В JQuery какая разница между

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

и

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

Выполняются ли те же самые операции внутри внутри jQuery.js?

и какой из них лучше использовать.

4b9b3361

Ответ 1

T думаю .empty() быстрее. Это источник jQuery для .empty()

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></$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; }

Это ясно, вы можете выбрать лучшее.

Ответ 2

Я попробовал следующее в JSperf и обнаружил использование $('# div'). empty(); лучше

enter image description here

Ответ 3

Из исходного кода функции html, среди прочего:

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

Итак html вызывает empty. Таким образом, он (чуть) быстрее просто вызывает empty. И, конечно, это более читаемо.