为什么我的简单jquery不起作用?

时间:2011-08-06 01:28:00

标签: jquery

我正在写一些简单的jquery,由于某种原因,我根本无法使它工作。我/知道/它在其他地方工作,但我要么丢失了一些东西,要么我的网络服务器上有一个错误。

代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>asdf</title>

    <script src="jquery.js" type ="text/javascript"></script>


<script language ="javascript" type = "text/javascript">
 //alert("number one");


$('#regSubmit').click(function(){

alert("Clicked!");

});

$('#test2').click(function(){
   alert("yeah that worked.");
})

</script>
</head>
<body>


<input type ="button" id="regSubmit" value="Register!" />

<div id="test2">
Here is some other stuff!
</div>


</body>
</html>

所以我完全复制了那段代码,但它对我不起作用。注释掉顶部附近的警报(第一个)工作正常,所以它调用jquery,但没有点击注册。

我做错了什么?

4 个答案:

答案 0 :(得分:3)

将您的javascript添加到

$(function(){
   //your code
});

demo

这是必需的,因为您只能将事件绑定到元素,它们已经存在。在您存在之前尝试此操作时,此示例代码在加载完整页面后执行它,因此所有html都在那里

答案 1 :(得分:1)

您必须将脚本移至底部或将其包装在$(document).ready(function() { … }中。脚本执行时文档尚未完成加载,因此当您尝试附加事件处理程序时,关联的元素不存在。

答案 2 :(得分:1)

嵌入到HTML中的代码是按顺序执行的,因此在执行代码时,尚未定义regSubmit和test2。

将您的代码移到HTML文档的底部,或将其包装在$(function(){ /*your code here*/ });中,这将推迟您的代码执行,直到加载整个文档。

答案 3 :(得分:0)

您尝试在事件存在之前将事件绑定到元素。运行ready事件处理程序中的代码,以便在整个文档加载时运行:

$(document).ready(function(){

  $('#regSubmit').click(function(){
    alert("Clicked!");
  });

  $('#test2').click(function(){
    alert("yeah that worked.");
  })

});