Javascript - ReferenceError: $ is not defined

Javascript - ReferenceError: $ is not defined

本文关键字:is not defined ReferenceError Javascript      更新时间:2023-09-26

所以我有一个正在开发的web服务,但偶尔会出现错误"ReferenceError:$未定义"。我知道你在想什么,加载jquery的顺序不对。下面是我用来加载脚本的代码。Tooltip.js是包含javascript/jquery的文件,也是抛出错误的位置。

    function loadjscssfile(filename, filetype, level){
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
    }   
    parent.document.getElementsByTagName(level)[0].appendChild(fileref)
}
window.onload = function() {
    loadjscssfile("//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js", "js", "head"); 
    loadjscssfile("//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css", "css", "head");
    loadjscssfile("//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js", "js", "head"); 
    loadjscssfile("...tooltip.js", "js", "head");
}

下面的代码是抛出错误的地方。它被抛出到所示的类似位置,其中$(document)。。。正在呼叫。该调用前面是纯javascript,后面只有jQuery。这在tooltip.js.中

//some javascript functions
$(document).ready(function() {
       ...
      //some jQuery functions
      ...
 }

作为javascript和jQuery的初学者,我已经尝试了我能想到的所有方法(这并不多),并且我搜索了所有的解决方案,其中许多似乎是脚本加载的顺序。

对我来说,真正令人振奋的是,它有时工作得很好,但其他时候似乎jQuery没有加载(因此出现ReferenceError)。有人有什么想法吗?

当然,另一种选择是用javascript重写整个脚本,这与我想要做的相去甚远。如果您需要进一步的信息、代码或解释,请告诉我。

编辑:所以问题是,即使我按照我希望加载的顺序附加js文件,它们也没有按照这个顺序加载。解决方案是使用一个unload方法来加载查询,并在该方法中加载其他文件。它似乎起了作用。

您对jquery的加载顺序是错误的。原因如下:

一旦HTML文档准备就绪,ready事件就会激发,而onload事件则等待并仅在加载了所有内容(图像等)后激发。

所以你的问题是由于onload有时在ready之后发射。请注意,理论上,onload应始终在ready之后激发。

我会把JS库放在页面的头部,以确保它们可用。有些人可能会认为所有JS都应该在页面的底部,但我认为这取决于你自己的判断。将所有JS都放在底部有利弊,具体取决于情况。