jQuery:document.ready通过$.get('script.js')调用递归触发



我正在学习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()添加了处理程序将始终在动态加载的脚本中执行。

最新更新