在$(document).ready()之前运行一个函数

我已将多个文件中的多个函数附加到$(document).ready,并希望将单个函数附加到它们之前作为$(document).ready处理的第一个函数或者在$(document)之前独立触发的函数.ready处理程序。

有没有办法处理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() {}); 

函数a首先需要与订单无关,但只能在几页上调用。 我不能保证b或c的顺序,所以我不能在b或c的开头触发自定义事件来触发a。

所以我想要一个通用的解决方案,我可以用它来强制放置一个jQuery的内部readyList或挂钩到jQuery的ready函数并安全地编辑它,以便它在readyList中的任何其他函数之前调用。

[进一步编辑]

如果可能的话,我宁愿不必重新设计javascript代码执行顺序,或者除了函数a()之外还必须触及任何其他代码。 我知道重组会让我解决这个问题,但我宁愿只写一个函数

 $.beforeReady(function a() {}); 

这将是我将触发所有其他文件将bind到的自定义事件的时间,您将只有一个ready处理程序,它将执行操作,然后触发自定义事件。

因此,代码中的其他位置,而不是使用$(document).ready ,您将使用

 $(window).bind('setup', function() { //code here... }); 

和/或

 $(window).bind('loaded', function() { //some other code here... }); 

在你唯一的ready处理程序中,你会做这样的事情:

 $(document).ready(function() { $(window).trigger('setup'); $(window).trigger('loaded'): }); 

$(document).ready()或者只是$(function(){})只是一个.addEventListener实现(不完全,但是很接近),这意味着你可以在之前和之后添加监听器。

 $(document).ready(listener); // goes off first. $(document).ready(otherListener); // goes off 2nd. 

等等,将function夹在中间并不难。 没有必要破解.ready() imo。

我刚才有同样的问题。 我在GitHub上添加了一个小脚本,它添加了一个$ .beforeReady()函数。 有趣:)

https://github.com/aim12340/jQuery-Before-Ready

只需在jQuery之后加载脚本就像在这个例子中一样: