多个.ready()函数绑定出错

时间:2011-12-27 11:47:42

标签: javascript jquery

我有一个页面,其中一些部分加载了jQuery。其中许多部分的javascript代码类似于:

console.log( "script X loaded"); 
$(document).ready( function() {
    console.log( "script X executed");
    // ... some code ...
});

问题是所有这些函数都已执行,直到我更新到jQuery 1.7.1

现在,至少其中一个功能不会像其他人一样被执行,在控制台我可以读到:

script A loaded
script A executed
script B executed

它结束时没有执行脚本B.我试图测试它擦除脚本B中函数内的所有代码。

您对可能发生的事情有任何疑问吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

在我看来,这就像是一种竞争条件,在这种情况下,你以不适当的顺序加载所需的组件,导致你的一些代码永远不会变成就绪 - 因此,永远不会执行。

我可能完全错了,但对我来说通常就是这种情况。

此外,如果侦听器附加到document,则可能是您已经在某个时刻打开了要写入的文档,并且从未将其关闭。

答案 1 :(得分:2)

我建议你添加

try{ ... }catch(error){console.log("error in method X " + error)}

包装你的功能。这样您就可以知道哪个方法出错了。 我假设抛出了一些停止执行的异常。

我还建议您使用chrome,单击ctrl + shift + j查看控制台,添加“调试器”;在代码中 像这样

try{

    console.log("running method X");
    .... 
}catch(error){ debugger; console.log("error in method X : " + error); }

这将使您能够在发生错误时调试代码。