2011-06-17 47 views
0

我正在嘗試爲類標識的菜單列表按鈕註冊一個點擊事件,但它似乎沒有被解僱。我的代碼如下:jQuery .click事件沒有註冊到類

<body> 
<!-- jQuery Simple Drop-Down Menu http://javascript-array.com/scripts/jquery_simple_drop_down_menu/# --> 
     <div id="dropDownDiv" style="width: 908px; height: 24px; margin: auto auto; background: #324143;"> 
      <ul id="jsddm"> 
       <li><a href="#">Item 1</a> 
        <ul> 
         <li><a class="btn myOtherClass" href="#">Button 1</a></li> 
         <li><a class="btn myOtherClass"href="#">Button 2</a></li> 
        </ul> 
       </li> 
       <li><a href="#">Item 2</a> 
        <ul> 
         <li><a class="btn myOtherClass" href="#">Button 3</a></li> 
         <li><a class="btn myOtherClass" href="#">Button 4</a></li> 
        </ul> 
       </li> 
      </ul> 
     </div> 

</body> 

而且在我的劇本,我有以下:

/* Register the click event for menu buttons */ 
$('.btn').click(function() { 
    alert("You clicked a button"); 
    }); 

警報從未火災,我不知道爲什麼,任何幫助表示讚賞。

UPDATE:

在鏈接的代碼工作對我來說,不知道爲什麼它不在我的項目。我在啓用Java資源的Eclipse PHP項目環境中。我在Chrome和Firefox上嘗試過我的項目,但都無法工作。我會檢查我的腳本的其餘部分。

更新2:

看起來SHEF的有關在.ready函數包裹的伎倆建議。我仍然不明白爲什麼需要這樣做,「c = smiles」的鏈接沒有它。

+1

你的腳本何時執行?當您嘗試連接事件時DOM是否準備就緒? –

+0

您的菜單項是HTML模板的一部分,還是它們是動態生成的? –

+0

它的確如此,試試這個:http://jsfiddle.net/pEftj/ –

回答

4

適合我,check it out。也許你沒有包含jQuery?或者,你是不是包裝一個文檔中的事件偵聽器的綁定代碼準備這樣的:

$(document).ready(function(){ 
    $('.btn').click(function() { 
     alert("You clicked a button"); 
    }); 
}); 
+0

謝謝Shef,包裝在.ready函數中。我不明白爲什麼它需要。爲什麼jQuery的文檔在他們的例子中沒有指定?如果沒有包裝在.ready函數中,上面的「c-smile」鏈接是如何工作的? – kingrichard2005

+0

當您訪問和操作DOM元素時,您始終需要等待ready事件觸發。 [它被記錄](http://api.jquery.com/ready/),但有時我們只是通過它而不知道。 :)上面的例子工作,因爲DOM已經加載在那裏,所以沒有問題。有時可能會起作用,有時可能不起作用,因爲有時DOM元素可能已被加載,有時可能尚未加載。知道DOM元素是否已加載的最好方法是等待'ready'事件觸發,因此爲什麼我們將所有內容...... – Shef

+0

...放在'ready()'函數內,它將執行代碼一旦DOM元素已經加載,我們就已經放入它了。 :) – Shef

0

您使用stopPropagation或返回可能已經阻止點擊事件的發生再次單擊事件假的?

是否在jQuery加載後使用jQuery?

是否在綁定時在DOM中? (使用代理,而不是點擊,如果不是,或加載後綁定)