jQuery不能在外部JavaScript中工作

xyz*_*xyz 9 html javascript jquery

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

喜欢:

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

当我在外部JavaScript代码中复制相同内容<script>并且在我的HTML中导入它时,它根本不起作用.

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

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

Joh*_*een 14

首先,您不希望外部JavaScript文件中包含<script>标记,如果我正在阅读您的帖子.

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

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

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

并且您希望确保在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>
Run Code Online (Sandbox Code Playgroud)

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

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

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