jQuery.fn.dequeue
和next
函數都是jQuery.dequeue
的簡單包裝,在這兩個示例中都傳遞了相同的參數集。
(最多日期作爲jQuery的1.9.1)
在接下來的功能參數:type
是指示隊列,缺省爲fx
這是jQuery的默認的動畫隊列的可選參數。 element
是一個DOM元素參考。
$.fn.dequeue
:
dequeue: function(type) {
return this.each(function() {
jQuery.dequeue(this, type);
});
}
$().dequeue
只是調用$.dequeue
所含jQuery對象內的每個元件。
您的使用案例$(this).dequeue()
將一次調用$.dequeue
,元素最初由this
引用。
同樣,next
將通過一個單一的元件參考$.dequeue
,其是具有其隊列中的當前元素出隊:
next = function() {
jQuery.dequeue(elem, type);
};
換句話說,這些是基本相同的。 next
稍微直接一些,因爲它沒有迭代包裝,因此next()
應該比$.fn.dequeue()
快一些微秒。
主要區別在於您可以在多個元素上調用.dequeue()
,並且它將使其中的每個元素都出列,而next()
直接與隊列出隊的元素關聯。
對於在回調中有$(this).dequeue()
的用例,這是無關緊要的。當開始出隊一個或多個元素時,$.fn.dequeue
很有用。 $(this).dequeue()
的結果與next()
的結果相同,但後者在這種情況下會提供微秒的增益。
正如@Explosion丸在評論指出,有與非fx
隊列打交道時,還多了一個特點:
$(this).dequeue()
沒有type
參數將出列默認隊列(fx
)所以非fx
隊列需要將名稱作爲參數傳遞給.dequeue()
,而.next()
查找其創建範圍的鏈並自動檢索$.dequeue()
範圍內的type
,該範圍創建了t他next
函數對象。
因此,使用非fx
隊列時,你將不得不隊列名稱傳遞給$().dequeue(queueIdentifier)
,而.next()
將永遠在你的回調屬於隊列中出列。
這是一個[tag:optimization]問題? – millimoose 2013-02-27 01:39:35
在['.queue()'](http://api.jquery.com/queue/#queue2)的文檔中記錄了'next()'的作用:「從jQuery 1.4開始,函數是被調用的是另一個函數作爲第一個參數,當被調用時,這會自動將下一個項目出隊並保持隊列移動。 – millimoose 2013-02-27 01:41:28
我添加了優化,因爲它聲明優化是改進方法或設計的行爲。我正在尋找使用這些功能的最佳方法,所以我正在尋找'優化'我的代碼......讓我百分百感覺! – Epik 2013-02-27 02:47:36