2011-04-27 60 views
1

我有這樣的代碼:問題:jQuery的單擊事件僅適用於第一次出現在文本

<span id="Santiago4">Santiago</span> 
<br>more html code here<br> 
<span id="Santiago4">Santiago</span> 
<script> 
    jQuery("#Santiago4").click(function() {alert("blabla")}); 
</script> 

我的問題是,當我點擊上首次出現的HTML文本,單擊事件觸發警報彈出。但是當我點擊第二次出現(或者其他任何一次,如果聖地亞哥出現在文本中幾次),什麼都不會發生。

這是爲什麼?爲什麼當點擊第二個span元素時,它也有id:Stantiago4函數的代碼不能運行?

在此先感謝。

+1

你不能有相同的'id'屬性超過一個元素。 – 2011-04-27 12:52:12

+2

除了Andrew的評論之外,如果你需要相同的'名字'或引用超過*一個*元素,你應該使用'class'而不是'id'。 – 2011-04-27 12:53:29

回答

5

元素ID屬性旨在是唯一的。如果你想分享的屬性,而使用類屬性:

<span class="santiago4">Santiago</span> 
<br/>more html code here<br/> 
<span class="santiago4">Santiago2</span> 

換句話說,而不是id,使用class。然後jQuery的是:

jQuery(".santiago4").click(function() { 
    alert("clicked!") 
}); 

現在單擊事件將被綁定到與class「santiago4」,這就是你正在尋找所有的HTML元素。

1

它們都有相同的ID,它不是很好的HTML,並且在嘗試使用jQuery進行操作時會導致問題。嘗試使用類名替代:

<span class="Santiago4">Santiago</span> <br>more html code here<br> <span class="Santiago4">Santiago</span> <script>jQuery(".Santiago4").click(function() {alert("blabla")});</script> 
2

ID在整個HTML元素中應該是唯一的。

您可以改爲爲每個跨度和作爲jQuery選擇器的使用.classname分配一個公共類名。

試試這個:

<span class="Santiago4">Santiago</span> <br/> 
more html code here<br/> 
<span class="Santiago4">Santiago</span> 
<script> 
    jQuery(function(){ 
     jQuery(".Santiago4").click(function() { 
      alert("blabla") 
     }); 
    }); 

</script> 
2

你不能有相同的ID一個以上的元素,這些都需要是不同的。對於你所描述的使用情況,您需要使用其他選擇,如類:

<span class="Santiago4">Santiago</span> 
<br>more html code here<br> 
<span class="Santiago4">Santiago</span> 
<script> 
    jQuery(".Santiago4").click(function() {alert("blabla")}); 
</script> 
2

更改它使用一類因爲安德魯說,你不能有一個以上的元素用相同的ID:

<span class="Santiago4">Santiago</span> 
<br>more html code here<br> 
<span class="Santiago4">Santiago</span> 
<script> 
    jQuery(".Santiago4").click(function() {alert("blabla"); }); 
</script> 

Working JS Example

相關問題