2011-09-27 23 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