2010-07-31 116 views
2

的test.html:jQuery的綁定按鈕單擊事件失敗

<html> 
    <head> 
     <script type="text/javascript" src="jquery-1.4.2.js"></script> 
     <script type="text/javascript" src="test.js"></script> 
    </head> 
    <body> 
     <input id="but2" type="button" value="2"/> 
    </body> 
</html> 

jQuery的1.4.2.js從http://jquery.com/

test.js下載:

var fn=function(){ 
    alert('success!'); 
}; 

$('#but2').click(fn); 

當單擊該按鈕, 什麼都沒發生。我調試了很長時間,但沒有找到根本原因。請幫忙。

+0

這是因爲此時應該附加事件處理程序,因爲DOM尚未加載,jQuery無法找到ID爲「but2」的元素。將腳本移動到頁面的按鈕上,或者,這是首選解決方案,按照Patrick的說法。 – 2010-07-31 16:59:40

回答

4

將它換行使得代碼在文檔加載前不會運行。

試試看:http://jsfiddle.net/ApDKU/

$(function() { 
    var fn=function(){ 
     alert('success!'); 
    }; 

    $('#but2').click(fn); 
}); 

這樣做:

$(function() {...}); 

...相同

$(document).ready(function() {...}); 

...這導致代碼裏面僅在<body>標籤完成loa後才能運行丁。

你有它的方式,附着在click處理程序#but2代碼正在運行#but2已經加載到頁面。

+0

「帕特里克dw」的方法的作品!非常感謝!! 順便說一句,來自http://jsfiddle.net/ApDKU/的代碼存在一個小問題。如果有人從http://jsfiddle.net/ApDKU/直接複製js代碼,則會包含一些不可見字符,並且代碼不會運行。我注意到它在螢火蟲。我刪除了不可見的字符,代碼像魅力一樣運行。 – peter 2010-07-31 17:12:52

+0

@peter - 是的,我不知道那些角色是什麼。他們總是在那裏,有時他們真的讓我感到困擾。真高興你做到了。 :O) – user113716 2010-07-31 17:17:51