2014-05-03 129 views
1

我通过ajax加载html的一部分。这部分具有在document.ready上运行的JavaScript代码。我的理解是,已准备好的相关代码不会执行 ,因为在发生ajax调用之前事件已经被触发。ajax加载文档就绪事件javascript

但是,情况并非如此。我可以看到放在document.ready中的console.log。

请解释发生了什么。

在此先感谢。

+0

向我们展示一个可重现的示例。 – Brad

回答

1

当文档已准备就绪后,某些代码使用$(document).ready(fn)时,立即调用回调而不是等待。这是jQuery的具体实现.ready()。它可以判断DOM是否已经准备好,或者是否已经触发了其他处理程序。

在任何一种情况下,它都会立即调用回调(技术上说,它会调用短回调setTimeout()),以便它异步激发。

示范:http://jsfiddle.net/jfriend00/GYc6k/

+0

它如何与onreadystatechange一起使用? 尝试示例http://jsfiddle.net/charanjeet2008/y5CGf/ –

+0

@CharanjeetKaur - 使用onreadystatechange时,它取决于您的代码。请参阅[在这里使用onreadystatechange作为其方法之一的代码](http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when -the/9899701#9899701)这是安全的。 – jfriend00

+0

@CharanjeetKaur - 连接任何形式的文档就绪监听器的任何代码应该首先检查文档是否已经准备好if(document.readyState ===“complete”)'。如果文档已经准备好,那么它应该立即执行处理程序。这就是jQuery.ready()是如何做到的以及[docReady()'](http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a功能当/ 9899701#9899701)我链接到较早的纯JS实现。 – jfriend00

相关问题