0

切り離す前に、そのようなチェックを行う必要がありますか?

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

またはjqueryは自動的にそれを行いますか?

ありがとう ;)

アップデート

他の状況と同じでwr.find('iframe:hidden').show();、他の状況も異なります。

4

1 に答える 1

2

あなたはいつでもソースコードを見ることができます。

の場合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は、親からデタッチする前に親が存在することを確認しますが、呼び出しを無視しません。

2回呼び出すと効果があるかどうかは関数によって異なります。

もちろんshow、2回呼び出すと、2回目の呼び出しには(目に見える)効果はありません。しかし、それはjQueryが背後で何もしていないという意味ではありません。show実装を見てください。

于 2011-07-09T11:06:57.167 に答える