2011-09-27 99 views
1

我有一個關於jQuery類選擇器的問題。我正在查看使用名爲slidedeck的jQuery插件的頁面,頁面作者有兩個<div>,它們顯示兩個不同的幻燈片設置。沿着這些線路:jQuery類選擇器 - 它默認的範圍是什麼?

<div id="slidedeck_frame" class="skin-slidedeck"><dl class="slidedeck"> 
    <!-...HTML in here--> 
</div> 

<script type="text/javascript"> 
     $('.slidedeck').slidedeck({ 
       autoPlay: true, 
       cycle: true, 
       autoPlayInterval: 2500, // 2.5 seconds 
       hideSpines: true 
      }); 
</script> 

<div id="slidedeck_frame" class="skin-slidedeck"><dl class="slidedeck"> 
    <!-...HTML in here--> 
</div> 

<script type="text/javascript"> 
      $('.slidedeck').slidedeck(); 
</script> 

所以,你有兩個<div>的分享相同的ID和CSS類爲他們的孩子,但有不同slidedeck設置。

我本以爲jQuery類選擇器會將最後一個slidedeck設置應用於<dl> s,但實際上它們都使用直接在它們下面的slidedeck設置。我不可能理解jQuery選擇器範圍(很有可能),或者有可能在這裏玩別的東西嗎?

+1

你不能在HTML中具有相同ID的元素。 ID必須是唯一的;如果有重複,所有投注都關閉。 –

+0

馬特 - 謝謝你的回覆。我意識到重複的HTML ID是一個禁忌,但想知道爲什麼,鑑於此,jQuery像它一樣運行。聽起來像事情幾乎愚蠢的運氣,像他們一樣工作? – larryq

回答

1

重複的ID在HTML中無效。行爲未定義。

編輯

在這種情況下,當你不使用ID作爲一個選擇,你的jQuery選擇應與選擇類返回兩個標籤。

http://jsfiddle.net/cJ4wp/

+0

好的,謝謝你的確認。 – larryq

2

我不能瞭解jQuery選擇範圍(很可能)

你誤會ID的概念。 ID屬性意味着在DOM中的元素是唯一的。我希望清除它:)

+0

理解,但爲什麼jQuery CSS選擇器會按照上面的方式工作? – larryq