2011-06-08 55 views
2

我正在审查的代码,发现

$("#item1 #item2") and $("#item1>#item2") 

可以互换使用。有没有什么不同,还是一样的?

+1

什么是HTML看起来就像该代码?多个'#item1's?如果有,那么它是无效的。 – Eric 2011-06-08 17:15:38

+0

您可能想了解[CSS选择器](http://www.w3.org/TR/css3-selectors/#selectors)。在第一个选择器中有一个后代组合器,在第二个选择器中有一个子组合器。 – 2011-06-08 17:17:09

+0

@ Eric-这些项目是独一无二的......我应该刚刚给出了使用类而不是id的例子......无论如何采取了一些措施。 – Raja 2011-06-08 17:23:21

回答

5

两者将匹配

<div id="item1"> 
    <div id="item2"> 
    </div> 
</div> 

但是只有第一个将匹配

<div id="item1"> 
    <div> 
     <div id="item2"> 
     </div> 
    </div> 
</div> 

第一表达式使用descendant selector。第二个表达式中的>符号是child selector。两者都是标准的CSS选择器。

但是,由于id s 必须是是唯一的,两者都过于复杂。相反,你应该只使用$('#item2')

+1

关于在选择器中不使用多个ID的好处 - 完全没有意义。 – Orbling 2011-06-08 17:16:57

+0

@Orbling:除非当然,如果你在每一页上执行相同的jQuery,你有时不需要匹配。 – Eric 2011-06-08 17:19:12

+0

@Orbling,我不同意。如果您在.js文件中撰写适用于多个页面的文件,如果一个页面具有#page1 #item而另一个页面具有#page2 #item,则如果您只想定位一个页面,则需要两个ID。所以有一点指向多个ID选择器。 – 2011-06-08 17:21:14

0

>的符号是指“仅包括属于该元件的直接子元素”。因此,如果您只想选择子项为#item1的子项,请使用它,否则使用第一个选项。

相关问题