我想要我的处理程序ready
事件将在所有其他处理程序完成后触发done.
它对于操纵插件的不良行为非常方便。
如果我在所有其他处理程序之后编写我的处理程序,它只能保证它会在所有其他处理程序之后触发fired, 没做完:
$(function() {
setTimeout(function() { alert('other handler'); }, 500);
});
$(function() { alert('my handler'); });
Fiddle http://jsfiddle.net/k23vk/
在该代码中,我的经纪人首先警报。
我在 jQuery 版本之前读过1.4
the readyList
是公开的。所以在版本中1.7
我不知道如何判断我的处理程序是否是最后一个处理程序。
如果想法是您不控制其他就绪处理程序,那么给出另一个处理程序使用的示例setTimeout
,您永远无法真正知道(在不检查其他代码的情况下)您的代码是否会在所有其他代码之后运行。
The readyList
即使它是公开的也无济于事,因为在您的示例中,带有setTimeout
将从中删除readyList
早在setTimeout
处理程序运行。这readyList
数组无法控制此类异步代码也可以。
所以如果你不控制(无法修改)其他代码,那么我真的没有解决方案。但是如果其他代码只是长时间运行,但不是异步,那么就不会有任何问题,因为如果你的代码是最后一个.ready()
分配的处理程序,其他处理程序执行所需的时间并不重要。如果他们的代码是同步,它会迫使您等待,直到它们完成。只是如果他们使用异步代码,就像你的setTimeout
例如,那么除了检查其他代码并修改您的代码以确保它最后触发之外,您无能为力。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)