我是jQuery的新手,我遇到了一些奇怪的问题。我正在使用jQuery的change
和click
方法。它们在<script>
标记的HTML文件中使用时工作正常。
像:
<script>
$("select,input").change(function ()
{
// My code and some alerts
});
</script>
当我在没有<script>
的外部JavaScript代码中复制相同内容并在我的HTML中导入它时,它根本无法正常工作。
在外部JavaScript代码中使用jQuery是否需要进行任何更改?
PS:从HTML中成功调用同一外部JavaScript代码中存在的其他一些非jQuery函数。
答案 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.
});