2011-05-26 55 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"); 
});