Jquery是一個非常流行的JavaScript框架,它的detach()方法可以移除元素的事件處理程序,但仍保留該元素及其所有后代節點的數據和事件處理程序。讓我們來看看這個方法的源代碼。
jQuery.fn.detach = function( selector ) {
return this.remove( selector, true );
};
源代碼很短,因為該方法實際上只是調用了remove()方法并設置了第二個參數為true。
下面是remove()方法的相關代碼:
jQuery.fn.remove = function( selector, keepData ) {
var elem,
elems = selector ? jQuery.filter( selector, this ) : this,
i = 0;
for ( ; (elem = elems[i]) != null; i++ ) {
if ( !keepData && elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem ) );
}
if ( elem.parentNode ) {
if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
setGlobalEval( getAll( elem, "script" ) );
}
elem.parentNode.removeChild( elem );
}
}
return this;
};
該方法定位選擇器所描述的元素并刪除它們。如果keepData參數設置為true,則保留元素的數據和事件處理程序。如果該元素是一個節點,則使用jQuery.cleanData()方法清除任何與該節點關聯的數據和事件處理程序。
在所有情況下,該方法都會將元素從其父節點中刪除。
在本質上,detach()方法是將remove()方法與keepData設置為true一起使用。由于remove()方法執行了清除數據和事件處理程序,因此detach()方法將使這些內容保持原狀。
總結,Jquery的detach()方法非常簡潔但有效,它可以移除事件處理程序,但保留元素及其所有后代節點的數據和事件處理程序。
上一篇mysql8置連接數
下一篇mysql8索引底層原理