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

rya*_*nve 6 javascript jquery event-handling javascript-events

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

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

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

Jos*_*ber 4

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

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

$(window).data('events');
Run Code Online (Sandbox Code Playgroud)

注意:这是一种未记录的方法,最终可能行不通。仅将其用于检查。

  • @AndréAlçadaPadez - 不。不仅如此,这只会为您提供使用 jQuery 附加的事件处理程序。 (3认同)