在做$(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