我可以確定頁面上的jQuery對象的數量嗎?如何確定頁面上有多少個jQuery對象?
我想使用元素的數量作爲頁面複雜度的一種弱基準。我在想,如果我可以減少jQuery知道的元素數量,頁面可能運行得更有效率。
這是否有意義?
就像做*選擇和計算結果一樣簡單嗎?
相關:
How can I clear content without getting the dreaded 「stop running this script?」 dialog?
我可以確定頁面上的jQuery對象的數量嗎?如何確定頁面上有多少個jQuery對象?
我想使用元素的數量作爲頁面複雜度的一種弱基準。我在想,如果我可以減少jQuery知道的元素數量,頁面可能運行得更有效率。
這是否有意義?
就像做*選擇和計算結果一樣簡單嗎?
相關:
How can I clear content without getting the dreaded 「stop running this script?」 dialog?
var elementCount = $('*').size();
雖然這可能是更多你想要什麼:
var elementCount = $('body').find('*').size()
var elementCount = $('*').length;
這並不真的有很多工作要做,jQuery的,除了因爲它是一種方便的方法來得到答案。
var n= 0;
for (var i in jQuery.cache)
n++;
現在n
持有元素的jQuery已經 '感動'(添加數據,如數量事件處理程序)。
此前,這曾經是一個很大的問題,因爲它會'觸摸'每個元素,即使是檢查的數據。這個不愉快在jQuery 1.4中修復。
至於清理內容,是的,你可以使用innerHTML= ''
刪除所有的內容,而不給jQuery有機會分離它的數據非常緩慢。如果你知道這個元素中沒有'被觸動'的元素,那麼這是一個勝利,否則這是一個潛在的內存泄漏,直到頁面被重新加載,因爲未使用的數據仍然存在。
使用live()
/delegate()
事件綁定可避免將數據添加到其目標元素,這可以讓您更自由地使用此快捷方式。但是,如果你有很多要綁定的事件,並且它們不是很容易匹配的選擇器,這可能會導致事件處理變慢。
(因爲沒有瀏覽器的原生加速樣querySelectorAll
所比對的代表團需要做一個特定選擇的元素,這是提出了選擇器,API等級2)
+1 - 我想知道有關。我知道jQuery向元素添加了一個序列號,但不知道jQuery引用它們的位置。 – user113716 2010-05-28 14:22:38
謝謝,非常有幫助。 – Cheeso 2010-05-28 14:50:26