[英]Change order of JQuery ready calls
我需要订购一些onReady电话,我在这里和这里看到这些问题,一无所获。 然而,很久以前,也许现在有一些东西可以解决这个问题。 所以我需要做这样的事情:
$(function (){ console.log('second call'); })
$(function (){ console.log('first call'); })
澄清为什么我需要这样做:
我需要的原因是这些调用是通过所有应用程序传播的,最重要的是:其中一些来自第三方,我无法控制它们。 但我确实需要在第一时间调用我的方法,我需要在文档和文档中放置脚本。 我正在处理的代码是遗留代码,我无法对其进行大量更改,因此重新考虑您所采用的方式的答案对我来说没有多大意义。 如果可能或任何解决方法,我只是徘徊。
如果要控制函数执行的顺序,则应将它们放在同一个回调函数中。
$(function() {
console.log('second call');
console.log('first call');
});
原理是,ready()函数将数据添加到数组(readyList),然后按添加的顺序执行它们。 操纵readyList阵列可以解决你的要求,按这篇文章在这里
您可以使用数组来存储函数,并使用一个onReady调用以正确的顺序调用它们。
var calls = [];
calls[2] = function() {
console.log("third call");
};
calls[1] = function() {
console.log("second call");
};
calls[0] = function() {
console.log("first call");
};
$(function() {
for (var index = 0; index < calls.length; index += 1) {
calls[index]();
}
});
我很早就开始使用.ready()(在jQuery加载之后)从数组中执行函数。 因为它在源代码中很早就会先执行.ready()。 在页面的下方,我可以向数组添加函数,因此它们都会在任何其他.ready()之前执行。
我把它包装在一个.beforeReady()函数中,然后把它放在GitHub上作为jQuery-Before-Ready给任何感兴趣的人。
https://github.com/aim12340/jQuery-Before-Ready
用法:
$.beforeReady(function() {
alert("Ere I am JH")
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.