在DOMContentLoaded - JQuery之前未定义$

时间:2013-05-15 15:15:20

标签: javascript jquery addeventlistener domcontentloaded

我拥有的js文件中的第一个语句是

$(document).on("DOMContentLoaded", function (event) {
   $(document.body).on('beforeinsert', onBeforeInsert);
   $(document.body).on('afterinsert', onAfterInsert);
   $(document.body).on('wait', onWait);
   $(window).on('load', onLoad);
});

但是当我使用firebug时它告诉我“$未定义”。在文件的其他地方,一切都按预期工作。事实上,如果我将第一行更改为

document.addEventListener("DOMContentLoaded", function (event) {

一切也很好。我不想这样做,因为我希望能够获得跨浏览器的兼容性。

3 个答案:

答案 0 :(得分:1)

您收到该错误消息是因为您的脚本在定义$之前运行。

要修复它,请确保在运行该脚本之前加载了jQuery。

答案 1 :(得分:1)

听起来你在尝试使用JQuery之前没有包含JQuery JS文件。请记住,浏览器从上到下呈现页面,因此将对Jquery JS文件的引用添加到页面顶部。

答案 2 :(得分:0)

你的js在jquery加载之前运行。尝试:

1 - 在定义此脚本之前,在页眉的引用jquery

2 - 使用$([...]):

$(function() {
    $(document).on("DOMContentLoaded", function (event) {
       $(document.body).on('beforeinsert', onBeforeInsert);
       $(document.body).on('afterinsert', onAfterInsert);
       $(document.body).on('wait', onWait);
       $(window).on('load', onLoad);
    });
});