2011-05-26 56 views
0

我不明白为什么这个代码works以及错误的代码 - jQuery的

但低于任何代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

<script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 


<script type="text/javascript"> 
$('#enviar').click(function(){ 
    alert ("casd"); 
}); 

</script> 

</head> 
<body> 

    <input type="submit" id="enviar" value="Registo" /> 

</body> 
</html> 

是什么原因?

+1

会发生什么?你会得到什么错误? – 2011-05-26 23:08:36

+0

没有错误。当我点击按钮时没有任何反应。测试FF4和铬 – 2011-05-26 23:09:48

+1

我可以告诉你为什么jsfiddle的作品:如果你在左上角看,你会看到一个选择框,它说'onLoad'。这意味着JavaScript代码在整个页面加载后执行。你的代码与选择'no wrap(head)'相同,你会发现它也不起作用。 – 2011-05-26 23:15:10

回答

4

处理程序在元素存在之前被附加。无论是切换到$.live()或文档准备运行代码:

$(function(){ 
    // attach click here 
}); 

这将导致代码要等到该文件已加载,和DOM中存在的#enviar元素。在它存在之前,什么都不能附加到它。

+0

是的,解决我的问题,谢谢 – 2011-05-26 23:11:59

+0

@Wire我们来帮忙:) – Sampson 2011-05-26 23:13:12

2

当您附加单击事件处理程序时,文档尚未加载。那是< input>元素在该状态下不可用。

的解决方案是该文档已通过使用这样的jQuery的ready函数加载之后附加的处理程序:

$(document).ready(function(){ 
    $('#enviar').click(function(){ 
    alert ("casd"); 
});