2012-06-12 38 views
0

jQuery的許多按鈕,jQuery的

$("#direction").click(function() { 
    var direction = $(this).text(); 
    alert(direction); 
} 

HTML

<button id="direction">South</button> 
<button id="direction">North</button> 

只有第一個按鈕提示文本。我不明白爲什麼。我怎樣才能解決這個問題?

+0

ü使用的id選擇器。如果jquery引擎發現多個具有相同ID的元素,它將忽略除第一個元素之外的所有元素。 –

回答

7

你不能有兩個具有相同ID的元素,你可以做的是給他們相同的類,然後添加事件處理程序。

實施例:

<button class="directionBtn">South</button> 
<button class="directionBtn">North</button> 

$(".directionBtn").click(function() { 
       var direction = $(this).text(); 
       alert(direction); 
}); 
+0

此代碼包含語法錯誤,在末尾缺少'}'和')' –

+0

我們可以認爲語法不是答案的一部分。這更多地解釋了一個概念(使用'class'而不是'id')。但是你是對的,我編輯了我的答案來修復錯誤。 – Ryan

2

這是無效的,以具有相同id多個元素(一個id必須是文檔內是唯一的);因爲jQuery大概在內部實現了document.getElementById(),這將永遠(正確地)返回遇到的第一個元素id

在你的情況,你應該使用方向的class,並根據該選擇:

$('.direction').click(
    function(){/*...*/}); 
1

你不能用相同的ID兩個元素,使用類,如果要引用的多個元素一次,是這樣的:

<button class="direction">South</button> 
<button class="direction">North</button> 

然後在你的腳本:

$(".direction").click(function() { 
    var direction = $(this).text(); 
    alert(direction); 
}); 
+0

要清楚,你可以有兩個具有相同ID的元素。這樣做只是一個非常糟糕的主意,因爲這會造成問題。 –