$(“#item1#item2”)和$(“#item1>#item2”)之间有什么区别吗?

时间:2011-06-08 17:12:12

标签: jquery jquery-selectors

我正在审核代码并发现

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

可互换使用。是否存在差异或是否相同?

4 个答案:

答案 0 :(得分: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 必须是唯一的,因此两者都过于复杂。相反,您应该使用$('#item2')

答案 1 :(得分:1)

与CSS选择器相同

#this #that

表示#that的孩子的任何#this

在哪里

#this>#that

仅表示#that的{​​{1}}的直接后代。

More reading on descendant selectors.

答案 2 :(得分:0)

>符号表示“仅包含该元素的直接子元素”。因此,如果您只想选择子节点为#item1的子节点,请使用它,否则请使用第一个选项。

答案 3 :(得分:0)

>表示立即,直接子女。

<强>直接

<div id="a">
    <div id="b">
    </div>
</div>

<强>间接

<div id="a">
    <div>
        <div id="b">
        </div>
    </div>
</div>

请参阅文档:http://api.jquery.com/child-selector/