为什么我得到一个jQuery没有定义错误?

时间:2010-12-27 13:27:47

标签: jquery firefox firebug

我必须使用外部js文件才能加载jquery。我的js文件中的代码如下:

 document.write('<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>');

    (function($) {
        $(document).ready(function() {
            alert('it works!!');
        });
    })(jQuery);

在firefox firebug控制台中,我看到了这个错误:“jQuery未定义”,我认为这是因为jQuery库是在我的js文件中的$函数之后加载的。

您对我如何解决此问题有任何疑问吗?如果我从firebug控制台运行脚本,一切正常。

4 个答案:

答案 0 :(得分:5)

生成的<script>元素将在当前脚本元素后出现,并且在当前<script>元素的代码完成之后,其中的代码才会执行​​。< / p>

您需要在启动尝试使用它的<script>之前加载库。

更改为:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
    (function($) {
        $(document).ready(function() {
            alert('it works!!');
        });
    })(jQuery);
</script>

答案 1 :(得分:2)

您在调用时没有加载jquery是正确的。你必须编写一个函数来加载jQuery库,然后才调用你的代码。或者,您可以延迟代码执行,但这不是100%完全证明。

更新。 Link to check if jQuery has been loaded对回拨电话很有用。

答案 2 :(得分:1)

为什么使用document.write来引入jQuery?只需将<script>标记直接放在HTML中即可。

答案 3 :(得分:1)

Loading scripts dynamically可能会对您有所帮助。但是,你正在尝试加载,而正在加载页面,这与加载页面时加载它有点不同。

我的建议是一种黑客攻击:

document.write('<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js" onload="loaded()" onreadystatechange="loadedIE()"></script>');

function loadedIE() { //for ie
    if(this.readyState == 4){loaded();}
};

function loaded() {
    $(document).ready(function() {
        alert('it works!!');
    });
};

我认为readystatechange监听器应该有效(它是IE浏览器)。