jQuery使用$(document).ready加载外部JavaScript

时间:2012-02-29 16:12:10

标签: javascript jquery load getscript

我想加载外部HTML。此外,外部HTML包含一些JavaScript代码。由于load函数没有加载这个脚本,我必须使用getScript:

<div id="external-content"></div>

<script type="text/javascript">
  $("#external-content").load("external.html #myid", function() {
    // do something
  });
  $.getScript("external.js");
</script>

除非external.js有$(document).ready命令,它试图从external.html访问元素,否则它就像魅力一样。在我看来,事件发生得太早了。我还尝试将命令$ .getScript(“external.js”);进入.load回调,但没有成功。请注意,单独使用external.html并包含external.js可以直接使用。

1 个答案:

答案 0 :(得分:0)

不幸的是,这个时机有意义(即这是正确的行为)。标签内的脚本会激活对external.html的检索,并且不会等待它返回,它会继续检索external.js。与此同时,“基础”文档仍在加载,并且可能(实际上可能)将在检索externa.html之前完成。

因此,您可能会遇到以下情况:

文档确实已准备好(正在加载external.html不是DOM可编写脚本的条件),external.js已加载且可用,但external.html尚未完全加载。在external.html的元素出现之前,文档就绪函数将被触发(因为文档已准备就绪!)。

如果你想继续这种方法,可能有办法重新调整它,这样你就可以在external.js中使用on()来委托基础文档(#myid)的监听器来获取里面元素的事件external.html。