切り離す前に、そのようなチェックを行う必要がありますか?
if(for_detach.parent().length) {for_detach.detach();}
またはjqueryは自動的にそれを行いますか?
ありがとう ;)
アップデート
他の状況と同じでwr.find('iframe:hidden').show();
、他の状況も異なります。
あなたはいつでもソースコードを見ることができます。
の場合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
実装を見てください。