我将多个文件中的多个函数附加到$(document).ready中,并希望将单个函数附加在它们之前,作为$(document).ready处理的第一个或在$(document)之前独立触发的函数,处理程序.
有什么办法可以处理jQuery在内部触发的函数的顺序,作为jQuery.fn.ready的一部分,还是挂钩在jQuery.fn.ready之前调用的函数.
在第三方脚本中编辑jQuery.fn.ready可以安全地做,否则会导致其他第三方插件的可怕的敲击效果(除了编辑jQuery.fn.ready本身的插件)
[编辑]:
举个例子
$(document).ready(function b() {}); .... $(document).ready(function a() {/* optional setup*/}); .... $(document).ready(function c() {});
功能需要首先发生与订单无关,但只能在几页上调用.我不能保证b或c的顺序,所以我不能在b或c的开始触发自定义事件.
所以我想要一个通用的解决方案,我可以用来强制放置在jQuery的内部readyList或钩子开始jQuery的准备好的功能,并安全地编辑它,所以它调用之前的任何其他功能在readyList.
[进一步编辑]
如果可能,我宁可不必重新设计javascript代码执行顺序,或者除了功能a()之外还要触摸任何其他代码.我知道重组将允许我解决这个问题,但我宁愿只写一个单一的功能
$.beforeReady(function a() {});
解决方法
这将是一个时间,我会触发一个自定义事件,所有其他文件将绑定,你只有一个准备好的处理程序,这将做的东西,然后触发自定义事件.
所以,你的代码中的其他地方,而不是使用$(document).ready,你会使用
$(window).bind('setup',function() { //code here... });
和/或
$(window).bind('loaded',function() { //some other code here... });
而在您唯一的处理程序中,您可以执行以下操作:
$(document).ready(function() { $(window).trigger('setup'); $(window).trigger('loaded'): });