2011-12-18 160 views
0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>test</title> 
<script type="text/javascript" src="jquery.js"></script> 


    <script type="text/javascript"> 

    function buttonClicked(e) 
    { 

    alert(e.data.color); 
    } 

jQuery('#but1').bind('click',{color:'red'},buttonClicked); 
    jQuery('#but2').bind('click',{color:'blue'},buttonClicked); 
</script> 
</head> 



<body> 

<br/><br/><br/><br/> 
    <div align="center"> 
    <form action="" method="get"> 

    <input id="but1" type="button" value="Red" /> 
    <input id="but2" type="button" value="Blue" /> 
    </form> 
    </div> 


</body> 
</html> 

警報不會觸發click.why是什麼?jquery不會觸發事件

回答

1

這工作:

function buttonClicked(e) { 
    alert(e.data.color); 
} 

$(document).ready(function(){ 
    jQuery('#but1').bind('click',{color:'red'},buttonClicked); 
    jQuery('#but2').bind('click',{color:'blue'},buttonClicked); 
}); 

http://jsfiddle.net/RTXxY/

+0

爲什麼它不的文件準備工作外 – 2011-12-18 06:09:07

+0

因爲你選擇的元素尚未公佈,如果點擊處理程序的設置元素下降之前的標記。在頁面被解析的時候,元素可以被DOM使用; '$(document).ready()'等待頁面完全解析並準備就緒。 – 2011-12-18 06:09:36

+0

查看'ready()'函數的文檔:http://api.jquery.com/ready/ – canon 2011-12-18 06:18:10

1

上面的腳本放置在定義元素的位置,因此代碼執行時沒有任何可綁定的元素。最簡單的解決方案是隻在文檔準備就緒時執行腳本。

jQuery(function($) { 
    $('#but1').bind('click',{color:'red'},buttonClicked); 
    $('#but2').bind('click',{color:'blue'},buttonClicked); 
}