jQuery事件处理程序队列

时间:2010-05-28 21:54:32

标签: jquery-plugins jquery

问题概述

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

例如:

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

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

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

我目前的解决方案

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

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

问题

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

如果您希望按照特定的顺序组装队列,可以尝试this answer中建议的方法 - 构建可以依次互相触发的自定义事件。

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