我正在开发一个Greasemonkey脚本,它将实际升级页面上使用的jQuery版本。为此,我需要添加一个“就绪”事件处理程序,该处理程序将在页面上可能存在的所有其他事件处理器之后触发。
我知道jQuery在调用ready事件处理程序之前等待DOM可操作,那么有没有办法影响它执行它们的顺序?谢谢,
答案 0 :(得分:3)
按照注册顺序调用它们。所以从页面顶部到底部。如果您需要将其作为最后一个已注册的就绪回调寄存器,则将其放在body标签的最后。同时使用$(window).load
而不是$(document).ready
。
答案 1 :(得分:3)
现成的处理程序被添加到readyList
数组中,我很确定它是私有的,所以我认为你不能直接影响它。
您可能做的一件事是将代码添加到readyList
,但将其放在setTimeout()
中,以便等待执行。希望所有其他人都先完成。
但是,升级jQuery时可能会遇到麻烦。例如,存储事件处理程序的jQuery.cache
和其他数据的实现可能存在差异。
因此,如果jQuery.cache
填充了一个版本,则可能与另一个版本不兼容。
答案 2 :(得分:1)
How to control the order of functions being called in jQuery $(document).ready
根据上述问题的答案,他们应该按照添加的顺序进行解雇(特定问题中的ajax调用会给你的问题添加更多的泥浆)。