jQuery中queue和dequeue的用法

2022-10-11 06:33:07 字數 1928 閱讀 5152

jquery中的queue和dequeue是一組很有用的方法,他們對於一系列需要按次序執行的函式特別有用。特別animate動畫,ajax,以及timeout等需要一定時間的函式

queue和dequeue的過程主要是:

1,用queue把函式加入佇列(通常是函式陣列)

2,用dequeue將函式陣列中的第乙個函式取出,並執行(用shift()方法取出並執行)

也就意味著當再次執行dequeue的時候,得到的是另乙個函式了

同時也意味著,如果不執行dequeue,那麼佇列中的下乙個函式永遠不會執行

對於乙個元素上執行animate方法加動畫,jquery內部也會將其加入名為 fx 的函式佇列

而對於多個元素要依次執行動畫,則必須我們手動設定佇列進行了。

乙個例子,要兩個div依次向左移動,點選這裡檢視

1

div

如果只是輪流移動次數較少,可以使用animate的**函式來做,乙個動畫放在另乙個動畫的**裡邊

比如

1

$(「#block1″).animate(,

function

() ,

function

() ,

function

() ,

function

() ,

function

());

8});

9});

10});

11});

但這種方法當動畫較多的時候簡直是殘忍。

此時利用queue和dequeue則顯得簡單很多:

1

varfunc=[

2function

() ,anicb);},

3function

() ,anicb);},

4function

() ,anicb);},

5function

() ,anicb);},

6function

() ,anicb);},

7function()8

];9varanicb

=function

() 12

$(document).queue(「myanimation」,func);

13anicb();

1,我首先建議建立了乙個函式陣列,裡邊是一些列需要依次執行的動畫

2,然後我定義了乙個**函式,用dequeue方法用來執行佇列中的下乙個函式

3,接著把這個函式陣列放到document上的myanimation的佇列中(可以選擇任何元素,我只是為了方便而把這個佇列放在document上)

4,最後我開始執行佇列中的第乙個函式

這樣做的好處在於函式陣列是線性展開,增減起來非常方便。

而且,當不要要繼續進行接下來動畫的時候(比如使用者點了某個按鈕),只需要清空那個佇列即可。而要增加更多則只需要加入佇列即可

1

//清空佇列

2$(document).queue(「myanimation」,);3//

加乙個新的函式放在最後

4$(document).queue(「myanimation」,

function

());

以前發過乙個wait外掛程式,用於讓動畫之間可以暫停一段時間

可以看一下,他也就是利用了這個原理,預設在fx中插入乙個timeout,放到佇列中,直到timeout結束後才執行dequeue繼續執行佇列中的下乙個函式。

這當然也可以用於ajax之類的方法,如果需要一系列ajax互動,每個ajax都希望在前乙個結束之後開始,之前最原始的方法就是用**函式,但這樣太麻煩了。同樣利用queue新增佇列,每次ajax之後的**中執行一次dequeue即可。

如果沒有使用jquey庫,也可以自己寫段簡易**來解決這個問題。

來自:

STL中stack和queue的用法

發現在平常的編碼中,stack和queue用到的頻率都非常高,自己寫乙個stack和queue又顯得麻煩,今天特地研究如何使用stl中的stack和queue。研究的並不輸入,只是一些簡單用法而已。下面附上我的stack和queue使用 ps 在vs2010中按ctrl f5的時候命令列一閃而過,並...

STL中stack和queue的用法

發現在平常的編碼中,stack和queue用到的頻率都非常高,自己寫乙個stack和queue又顯得麻煩,今天特地研究如何使用stl中的stack和queue。研究的並不輸入,只是一些簡單用法而已。下面附上我的stack和queue使用 include include include include...

STL中stack和queue的用法

發現在平常的編碼中,stack和queue用到的頻率都非常高,自己寫乙個stack和queue又顯得麻煩,今天特地研究如何使用stl中的stack和queue。研究的並不輸入,只是一些簡單用法而已。下面附上我的stack和queue使用 c sharp view plain copy print?i...