我正在学习jQuery的官方文档。我被$(document).ready
录取了。我有以下代码:
$(document).ready(function(){
console.log('Document:READY');
$.get('script.js', function(){
console.log('Script Loaded');
});
});
我从文档中得到的是,一旦文档对象模型准备好,就会触发document.ready。我无法理解的是,当我使用$.get('script.js')
对script.js
进行加载调用时,为什么它再次触发document.ready
。这是plunkr和console.log
Document:READY
script.js:6 Script Loaded
VM562:4 Document:READY
VM562:6 Script Loaded
VM563:4 Document:READY
$.get('script.js')
是在script.js
中定义的。这意味着它是递归的,所以实际上$(document).ready(function()
被称为递归无限。它从不停止呼叫。
在深入研究文档后,我发现每当动态加载js时,jQuery都会触发此事件。来自api文档:
脚本可以在页面加载后很长一段时间内动态加载,使用方法,如$.getScript()。尽管由.ready()添加了处理程序将始终在动态加载的脚本中执行。