我应该在分离之前做这样的检查吗?
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 将确保在它与它分离之前有一个父级,但它不会忽略该调用。
调用两次是否有效果取决于函数。
当然,如果您调用show
两次,那么第二次调用将不会有任何(可见)效果。但这并不意味着 jQuery 在后面没有做任何事情。看看show
实现。