jQuery在外部JavaScript中不工作

jQuery在外部JavaScript中不工作,javascript,jquery,html,Javascript,Jquery,Html,我是jQuery新手,遇到了一些奇怪的问题。我正在使用jQuery的change和click方法。在我的HTML文件中使用标记时,它们工作正常 比如: $(“选择,输入”).change(函数() { //我的代码和一些警报 }); 当我在没有的情况下在外部JavaScript代码中复制相同的代码并将其导入HTML时,它根本不起作用 在外部JavaScript代码中使用jQuery是否需要任何更改 PS:存在于相同外部JavaScript代码中的一些其他非jQuery函数已从HTML成功调用

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

比如:


$(“选择,输入”).change(函数()
{
//我的代码和一些警报
});
当我在没有
的情况下在外部JavaScript代码中复制相同的代码并将其导入HTML时,它根本不起作用

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


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

您是否确保在自己的jQuery代码之前定义了jQuery

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

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

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

首先,如果我是这样读你的文章的,你不希望在外部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>

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

如何将外部js链接到页面?使用
我刚刚将HTML文件中的相同代码复制到外部js。您能告诉我如何在外部js中定义jquery吗?@Ajinkya您不必在外部js中定义,只需将jquery.*.js链接到您的HTML即可。它将自动合并。不要在外部JS中定义它,将jquery的标记放在HTML中,但要确保它在发布javascript之前经过逻辑实例化。@Ravi,dtbarna:谢谢你的建议,明白了:)添加了
document.ready
并且可以工作。是的,我想从HTML文件中删除
标记。所以我需要添加
$(document.ready(function(){…})
。如果我有多种方法呢?我应该将它们添加到
$(document.ready(function(){…})
下吗?其他非jquery函数呢,我应该将它们添加到
document.ready
下吗?您可能不需要,不需要。尽管这可能是一个很好的做法,否则会污染全局命名空间。但这是另一个话题。约翰:一个问题只是出于好奇。我尝试在
body
标记之后加载外部js(因为它没有document.ready),它也可以工作。但我想知道在页面末尾加载js是否是一种好的做法?几年前,每个人都推荐页面底部,但这种情况已经有所缓解。你也可以这样做,但我所在的学校认为脚本应该放在文档的开头。
<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>
$(document).ready(function(){
    $("select,input").change(function ()
    {
        // My code and some alerts
    })
    // Other event handlers.
});