Вы всегда можете взглянуть на исходный код .
В случае 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
.