我在jQuery中使用多個隊列時遇到問題。考慮以下示例:jQuery中的多個隊列
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function() {
alert('here');
});
});
警報從不會觸發。爲什麼?
我在jQuery中使用多個隊列時遇到問題。考慮以下示例:jQuery中的多個隊列
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function() {
alert('here');
});
});
警報從不會觸發。爲什麼?
似乎在第一次使用.dequeue()
當
.dequeue()
被調用時,在接下來的功能,您還需要設置在運動中該隊列自定義隊列調用時delay
(或任何其他動畫爲此事)隊列從隊列中移除,然後執行。該函數應該依次(直接或間接)導致.dequeue()
被調用,以便序列可以繼續。
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function(next) {
alert('here');
// start the next anim in the queue...
next();
}).dequeue('fx2');
});
注意,在queue
回調接收一個函數作爲第一個參數。這是您希望在完成「動畫」時調用的函數,以便可以執行隊列中的下一個項目。
jQuery的代碼處理 '自動啓動' 的fx
隊列中$.fn.queue()
function:
if (type === "fx" && queue[0] !== "inprogress") {
jQuery.dequeue(this, type);
}
一個更簡單的方法是'function(n){alert('here'); N(); }':) – 2010-05-21 21:05:10
+1 - 儘管代碼似乎在回調中沒有'$(this).dequeue('fx2');'也能正常工作。有必要嗎?似乎鏈接的'dequeue()'必須被調用? – user113716 2010-05-21 21:05:15
+1對於自動啓動筆記,但我仍然使用提供的下一個函數作爲您正在排隊的回調的參數,非常乾淨:) – 2010-05-21 21:09:04
請嘗試以下jsFiddle示例。它似乎工作,並做你想做的。
除了使用'fx'隊列而不是'fx2'隊列作爲OP想要的。 - 還是值得在SO鏈接中包含實際的代碼,而不是將實際的答案推給jsFiddle/jsbin – gnarf 2010-05-21 20:57:29
亞歷克斯,你完全錯過了我的問題。我不想使用標準的FX隊列(就像你的工作例子那樣)。 – kingjeffrey 2010-05-21 21:43:52
是否'click'處理程序中執行呢? – SLaks 2010-05-21 20:42:54