2010-08-17 51 views
4

我正在學習jquery,而且我很難運行以下非常簡單的代碼。JQuery按鈕不顯示警報

我的HTML看起來像:

<html> 
<head> 
    <title>JQUERY</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> 
    <script type="text/javascript" src="script.js"></script> 
</head> 
<body> 

<input type="button" id="testbutton" value="test" /> 

</body> 

我的script.js看起來是這樣的:

$(document).ready(function(){ 
    alert('document is ready'); 
}); 
$('#testbutton').click(function(){ 
    alert('button clicked'); 
}); 

當我加載瀏覽器的頁面......我得到的第一個警報當文檔被加載時(所以我確信我至少使用了正確的庫並且它正在被下載等)。

然而,當我點擊我的按鈕,我沒有看到第二個警告,說「按鈕被點擊」

我缺少什麼?

回答

3

click處理程序需要走你的$(document).ready內,以確保它勢必在DOM準備好,並且該元素將保證可Javascript的處理:

$(document).ready(function(){ 
    alert('document is ready'); 

    // bind a click handler to #testbutton when the DOM has loaded 
    $('#testbutton').click(function(){ 
     alert('button clicked'); 
    }); 
}); 

documentation

這是首先要了解 jQuery的:如果你想要一個事件,您的網頁上工作 ,你應該把它 的$內(文件).ready() 函數。在頁面內容加載之前,一旦DOM被加載,其中的所有內容將會加載 ,並加載 。

1

你可能要綁定的$(文件)。就緒()事件中的事件處理程序:

$(document).ready(function(){ 
    alert('document is ready'); 

    $('#testbutton').click(function(){ 
    alert('button clicked'); 
    }); 
}); 

這可以確保您的DOM腳本等被執行之前被加載。看看這是否能解決你的問題。

1

您還需要一個點擊一個document.ready內結合,就像這樣:

$(function(){  //short for $(document).ready(function(){ 
    alert('document is ready'); 
    $('#testbutton').click(function(){ 
    alert('button clicked'); 
    }); 
}); 

爲什麼呢?是選擇器$('#testbutton')在選擇器運行時未找到元素id="testbutton",因此它需要在頁面中的元素之後或上面的document.ready處理程序中運行。