最近,我将在现有网站(该网站自2008年起编写)中将jQuery库从1.3.2升级到1.10.2。 但由于遗留问题,以下代码模式经常使用,无法重写或审核所有代码模式。
function AgainAlert() {
alert('again');
}
function Test_init() {
alert('before');
$(document).ready(AgainAlert);
alert('after');
}
$(document).ready(Test_init);
升级后,发现由于文件准备就绪的执行顺序存在时间问题。 使用jQuery 1.3.2的上述代码的执行结果是
代码示例jQuery 1.3.2: http://jsfiddle.net/w4T7b/
使用jQuery 1.10.1的结果顺序是
代码示例jQuery 1.10.1: http://jsfiddle.net/FGt54/
有没有人知道这个问题? (我必须保持上面的代码模式)
此外,可以解决此问题或解决方法吗?
答案 0 :(得分:2)
function AgainAlert() {
alert('again');
}
function Test_init() {
alert('before');
AgainAlert();
alert('after');
}
$(document).ready(Test_init);
将$(document).ready(AgainAlert);
更改为简单AgainAlert();
效果很好,它已经在$.ready()
内,无需再次换行。
编辑:
你可以做的是覆盖jQuery $.ready
事件,这样它只会在第一次调用时等待主体准备就绪,其余的只是运行函数。
答案 1 :(得分:1)
最佳解决方案是改变
$(document).ready(AgainAlert);
到
AgainAlert();
因为第一个.ready
已经向您保证DOM已加载,并且不需要另一个。
<小时/> 另一种解决方法是修改
.ready
添加
$.fn.ready = function(a){ a(); };
到Test_init
会修复它。