确保jQuery事件处理程序执行顺序

时间:2012-01-27 16:58:32

标签: javascript javascript-events event-handling jquery

认为事件处理程序按照它们的注册顺序进行处理。 (这是正确的吗?)如果是这种情况,那么如果我在脚本的开头附加一个事件处理程序,我是否可以绝对确定它会在连接到同一事件的后续处理程序之前触发?事件命名空间也会对此产生影响吗?事件处理程序是串联启动的(一个是在下一个之前完成)还是并行启动?

我想这样做是因为我的脚本依赖于视口大小,这会在resize事件上发生变化,我需要不断寻找它。我不想在每个处理函数中重复调用$(window).width(),而是想在我的脚本顶部放置一个处理程序,将$(window).width()保存到每个调整大小的对象属性中。然后在后续处理程序中,我可以访问该属性并确定它是最近的测量值。

我知道我可以创建一个自定义事件,在计算完成后立即触发,并将后续处理程序附加到自定义事件。但是,我不想那样做,因为我需要保持与我之后的插件的互操作性,这些插件也可能附加到resize事件。

1 个答案:

答案 0 :(得分:4)

如果您在任何其他脚本运行之前附加了事件处理程序(即使只是一个插件),那么您的回调将始终首先触发。

您可以通过数据对象检查事件处理程序数组:

$(window).data('events');

注意:这是一种非文档化的方法,最终可能无法正常工作。仅用于检查。