2013-06-19 43 views
0

有沒有人知道如何添加一個回調後jQuery中的出隊完成?如果沒有,你能否向我提供如何給出隊列添加延遲?太感謝了!添加回調出隊

+0

出隊只是跳隊列,沒有回調。 – Starx

回答

1

您可以使用承諾(http://api.jquery.com/promise/)。這裏是一些代碼(字面意思)剛剛寫入,以確保某些div完成隱藏,然後展開等等。傳遞給承諾完成調用的函數只會在所有效果完成後才能運行。我將next()(=> dequeue)調用放在那裏,以便下一個排隊的項目運行。

<style> 
#pieces { width: 300px; height: 100px; background-color: lightblue;} 
#pieces .piece { width: 75px; height: 75px; border: 1px solid grey; float: left;} 
</style> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 
var q = $({});; 

function hidePieces() { 
    q.queue(function(next){ 
     var pieces = $($("#pieces .piece").get().reverse()); 
     pieces.each(function(i) { 
     $(this).delay(300*i).slideUp(1000); 
     }); 
     pieces.promise().done(function(){ next(); }); 
    }); 
} 

function showPieces() { 
    q.queue(function(next){ 
     var pieces = $("#pieces .piece"); 
     pieces.each(function(i) { 
     $(this).delay(300*i).slideDown(1000); 
     }); 
     pieces.promise().done(function(){ next(); }); 
    }); 
} 
$(function(){ 
    for(i=0;i<5;i++){ 
     hidePieces();showPieces(); 
    } 
}); 
</script> 
<div id="pieces"> 
<div class="piece" id="p1"></div> 
<div class="piece" id="p2"></div> 
<div class="piece" id="p3"></div> 
</div> 
2

可能需要更多信息,但是如果您想要在特定排隊項目出列後調用某些代碼,則可以使用自己的排隊函數包裝原始排隊函數。例如,你可以改變的:

$("#xyz").queue(someFunction); 

這樣:

$("#xyz").queue(function() { 
    someFunction(); 
    // your callback code here 
}); 

我假設,以保持該序列會說,「someFunction」召喚出隊。

+0

肯定這會工作?我正在尋找一個出隊回調,而不是在完成加載隊列之後。謝謝! –

+0

傳遞給隊列函數的函數將在調用出隊時被調用。 – Sean