可以't在从同一文件附加jQuery之后运行jQuery函数

can't run jQuery functions after appending jQuery from same file

本文关键字:jQuery 文件 之后 函数 运行 可以      更新时间:2023-09-26

我正在页面中添加多个脚本,包括jQuery、jQuery migrate。。。全部来自同一.js文件

这就是它的样子:

function appendScript(pathToScript, run) {
    var head = document.getElementsByTagName("head")[0];
    var js = document.createElement("script");
    js.type = "text/javascript";
    if(run == true){
        js.onreadystatechange = function () {
            if (this.readyState == 'complete') runFunctions();
        }
        js.onload = runFunctions;
    }
    js.src = pathToScript;
    head.appendChild(js);
}
appendScript("http://code.jquery.com/jquery-latest.min.js");
appendScript("http://code.jquery.com/jquery-migrate-1.3.0.min.js", true);
function runFunctions(){
    console.log('test') // all good till here
    // here i have only jquery functions
    $('#myDiv').addClass('test'); 
    alert("this doesn't work");
    ....
}

我的问题是,我不能运行$(document).ready或任何jQuery函数,只能运行javascript。

也尝试了超时。此外,我已经有1个$(window).bind("load", function(){...},所以我不需要再加1个

由于jQuery迁移依赖于jQuery,因此需要等待加载下一个脚本。

下面是一个工作示例(我还清理了一些变量(。

function appendScript(src, callback) {
  var head = document.getElementsByTagName("head")[0];
  var script = document.createElement("script");
  script.type = "text/javascript";
  if (callback) {
    script.onload = callback;
  }
  script.src = src;
  head.appendChild(script);
}
appendScript("https://code.jquery.com/jquery-latest.min.js", function() {
  appendScript("https://code.jquery.com/jquery-migrate-1.3.0.min.js", function() {
    document.body.innerHTML = 'Loaded jQuery version ' + jQuery.fn.jquery;
  });
});

请参阅工作jsfiddle。