2014-01-18 35 views
6

在下面的代碼中,調用$(this)時,jQuery是否重新查詢DOM,就好像選擇器已經傳遞給它(使用對象的某些屬性作爲選擇器),還是jQuery保留了以前返回的對象?

$('.someButton').on('click', function() { 
    $(this).remove(); // Is this another lookup, or just a wrapper for the previously returned object? 
}); 

回答

5

它不重新查詢DOM,this已經是一個元素。 jQuery只是將上下文設置爲元素,調整長度並返回自身。此代碼是從init功能,當你做$(something)它運行,這是一個很大的if..else聲明,它也可以檢查選擇,除其他事項外陣列的一部分:

// HANDLE: $(DOMElement) 
} else if (selector.nodeType) { 
    this.context = this[0] = selector; 
    this.length = 1; 
    return this; 

所以基本上它只是包裝元素在一個新的jQuery對象中。

+0

感謝您回答參考來源。這正是我所期待的。 – monners

+0

爲了促進這個答案,我同意,這裏是基於性能的證明,表明沒有使用'$(this)'重新查找'http://jsperf.com/this-slowing-us-down – Deryck

相關問題