在做$(element).on('customevent',function(){});
,每一個綁定customevent
也會觸發元素。這大致作爲Pub/Sub工作,看起來沒有順序或優先級。我想要做的是,實現我自己的回調隊列,但是,以一個可調整的優先級(比如WordPress的有,你可以設置鉤子的優先級)。所以更高的數字具有更大的優先級,並且數字0將是常用的並且最後執行。如何使用jQuery創建回調優先級隊列?
給出的例子$(element).on_priority(10, 'customevent', function(){});
和$(element).on_priority(0, 'customevent', function(){});
,該10
將優先執行相同customevent
第一,並且可能還是不取消0
優先級事件的執行。
我如何能實現呢?我有麻煩試圖以可視化的回調
到目前爲止,我認爲這樣的流程:
- 保持一個「全球性」(我的瓶蓋內)的對象設置的所有回調的名稱。
- 回調的每個成員的內部,包含所有優先級的對象。
var callbacks = {
'customevent': {},
'customevent2': {
0: [{element: $element, fn: function(), data:{}}, {element: $element, fn: function(), data:{}}],
10: [{element: $element, fn: function(), data:{}}],
20: [{element: $element, fn: function(), data:{}}]
}
};
是正確的方向?性能方面,它不應該是一個很大的衝擊,問題是反覆迭代對象。這裏的問題是,我將無法註銷先前設定的事件或設置的順序(或甚至重新排序)回調陣列每個優先
這是一個優秀的答案。我會試試這個並回到這個:) – pocesar 2013-03-13 09:21:13