未捕获的ReferenceError:即使在控制台上工作,也没有定义jQuery

时间:2017-04-09 19:31:13

标签: javascript jquery

我需要在js文件中包含jQuery,因为它将作为外部脚本加载。

这是我的代码:

function addjQuery() {
  if (!window.jQuery) {
    var jq = document.createElement("script");
    jq.type = "text/javascript";
    jq.src = "https://code.jquery.com/jquery-3.2.1.min.js";
    document.getElementsByTagName("head")[0].appendChild(jq);
    console.log("Added jQuery!");
  } else {
    console.log("jQuery already exists.")
  }
}
addjQuery();

jQuery(function($) {
  $(document).ready(function() {
  });
});

但是发生了错误: 未捕获的ReferenceError:未定义jQuery

即使我运行" jQuery"或" $"在chrome dev工具的控制台上,它正在工作。

问题是什么?

1 个答案:

答案 0 :(得分:1)

jQuery()函数在从脚本标记加载jQuery之前触发 - 您可以添加onload事件处理程序以在脚本完成下载时触发​​它:

function addjQuery() {
  if (!window.jQuery) {
    var jq = document.createElement("script");
    jq.type = "text/javascript";
    jq.src = "https://code.jquery.com/jquery-3.2.1.min.js";
    document.getElementsByTagName("head")[0].appendChild(jq);
    jq.onload = initjQuery;
    console.log("jQuery is loaded!");
  } else {
    console.log("jQuery already exists.")
  }
}

function initjQuery () {
  jQuery(function($) {
    $(document).ready(function() { });
  });
}

addjQuery();