【发布时间】:2012-02-20 16:00:43
【问题描述】:
我认为事件处理程序是按照它们注册的顺序处理的。 (对吗?)如果是这种情况,那么如果我在脚本的开头附加一个事件处理程序,我可以绝对确定它会在附加到同一事件的后续处理程序之前触发吗?事件命名空间也对此有任何影响吗?事件处理程序是串行触发(一个在下一个完成之前完成)还是并行触发?
我想这样做是因为我的脚本依赖于视口大小,视口大小会随着 resize 事件发生变化,我需要不断地寻找它。我不想在我的每个处理程序函数中重复调用$(window).width(),而是想在我的脚本顶部放置一个处理程序,在每次调整大小时将$(window).width() 保存到对象属性中。然后在后续的处理程序中,我可以访问该属性并确定它是最新的测量值。
我知道我可以创建一个在计算完成后立即触发的自定义事件,并将后续处理程序附加到自定义事件。但是,我不想这样做,因为我需要保持与我之后的插件的互操作性,这些插件也可能附加到调整大小事件。
【问题讨论】:
-
你的性能是否被
$(window).width()所取代?如果不是,为什么要打扰?您将只引入对全局变量状态的脆弱依赖。 -
@Inerdial 我需要调用它以及其他一些计算,例如 20 次。我认为这会有所作为。
-
20 次?不,不会的。尝试以 20 次迭代循环执行您在开发者控制台中提到的计算,看看您是否能注意到延迟。 (更好的是,试试 2000 年。)
-
@Inerdial 如果有办法不重复代码,为什么要重复代码?问题是让它不脆弱。我也认为会有一个缩小的好处。它比简单的
$(window).width()更多的计算 - 调用需要它的函数。
标签: javascript javascript-events event-handling jquery