jQuery事件处理程序队列

res*_*ion 8 jquery jquery-plugins

问题概述

在jQuery中,绑定处理程序的顺序是在绑定到同一元素时它们将被执行的顺序.

例如:

$('#div1').bind('click',function(){
// code runs first
}); 

$('#div1').bind('click',function(){
// code runs second
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我希望第二个绑定代码先运行怎么办?

.

我目前的解决方案

目前,我的解决方案是修改事件队列:

$.data(domElement, 'events')['click'].unshift({
                            type : 'click',
                            guid : null,
                            namespace : "",
                            data : undefined,
                            handler: function() {
                                // code
                            }
                        });
Run Code Online (Sandbox Code Playgroud)

.

我的解决方案有什么问题吗?

我可以安全地使用null作为guid的值吗?

提前致谢.

.

Ken*_*ler 1

有一个有趣的插件,称为eventstack。它允许您将事件绑定到事件队列的顶部或底部。我不知道您的问题有多普遍,也不知道您是否想要反转或任意排序堆栈中的事件,但该插件可能会简化您的任务。

如果您希望以非常特定的顺序组装队列,您可以尝试此答案中建议的方法- 构建可以依次触发彼此的自定义事件。

您的方法可能最适合您的要求,但也许这些也是选择。