jQuery: второе отключение игнорируется автоматически? - PullRequest
0 голосов
/ 09 июля 2011

Должен ли я сделать такую ​​проверку перед отсоединением?

if(for_detach.parent().length) {for_detach.detach();}

или jquery автоматически это делает?

Спасибо;)

Обновление

То же самое с wr.find('iframe:hidden').show(); и другими ситуациями.

1 Ответ

2 голосов
/ 09 июля 2011

Вы всегда можете взглянуть на исходный код .

В случае detach:

detach: function( selector ) {
    return this.remove( selector, true );
},

// keepData is for internal use only--do not document
remove: function( selector, keepData ) {
    for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
        if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
            if ( !keepData && elem.nodeType === 1 ) {
                jQuery.cleanData( elem.getElementsByTagName("*") );
                jQuery.cleanData( [ elem ] );
            }

            if ( elem.parentNode ) {
                elem.parentNode.removeChild( elem );
            }
        }
    }

    return this;
},

Так что да, jQuery позаботится о том, чтобы был родитель, прежде чем отсоединиться от него, но он не игнорирует вызов.

Зависит от того, имеет ли функция двойной вызов какого-либо эффекта.

Конечно, если вы наберете show дважды, то второй вызов не будет иметь никакого (видимого) эффекта. Но это не значит, что jQuery ничего не делает сзади. Взгляните на реализацию show .

...