jQuery不能在外部JavaScript中工作

时间:2011-05-21 05:27:27

标签: javascript jquery html

我是jQuery的新手,我遇到了一些奇怪的问题。我正在使用jQuery的changeclick方法。它们在<script>标记的HTML文件中使用时工作正常。

像:

<script>
    $("select,input").change(function ()
    {
        // My code and some alerts
    });
</script>

当我在没有<script>的外部JavaScript代码中复制相同内容并在我的HTML中导入它时,它根本无法正常工作。

在外部JavaScript代码中使用jQuery是否需要进行任何更改?

PS:从HTML中成功调用同一外部JavaScript代码中存在的其他一些非jQuery函数。

2 个答案:

答案 0 :(得分:13)

首先,您不需要&lt; script&gt;标记在外部JavaScript文件中,如果我正在阅读您的帖子。

jQuery的技巧是你的代码被设置为立即执行。

您希望包装脚本以便在文档准备好时加载它,例如:

$(document).ready(function(){
    $("select,input").change(function ()
    {
        // My code and some alerts
    })
});

你想确保你的文件在jQuery之后加载(否则不会设置$ global)。


加法:

以下是HTML的外观:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jscript/myExternalJs.js"></script>

以下是您的JavaScript代码应该是什么样子(注意JavaScript文件中没有脚本标记):

$(document).ready(function(){
    $("select,input").change(function ()
    {
        // My code and some alerts
    })
    // Other event handlers.
});

至于你的其他剧本......这取决于你在做什么。最重要的是不要尝试将事件侦听器挂钩到尚不存在的对象,这就是我们使用document.ready的原因。

答案 1 :(得分:3)

您是否确定在自己的jquery代码之前定义了jquery?

在处理jquery时,您还应确保DOM已准备就绪:

$(document).ready(function() {
    $("select,input").change(function() {
        // my code and some alerts
    });

    // more code here if needed, etc.
});