明星运算符似乎会递归所有选定的孩子,这与空间相同。我发现空间就像一个运算符一样奇怪但$("div p")
与$("div*p")
的作用相同。
答案 0 :(得分:7)
不,这不等同。星形运算符意味着至少需要一个元素位于它们之间。等效的选择器表达式是
p * div, p > div
匹配两种情况。 Selectors level 4很可能会引入另一个运营商
p >> div
确实相当于p<space>div
。
对于jQuery部分:如果您编写$('p div')
或任何其他选择器,您将熟悉HTML中的自动关闭元素。在这种特定情况下:div
元素不能位于p
元素内。当浏览器遇到p
时,它会自动关闭div
。如果你从这开始:
<p>
<div></div>
</p>
您的DOM将如下所示:
<p></p>
<div></div>
<p></p>
因此永远不会匹配任何p div
,p * div
,...请参阅此JSFiddle(注意:将两次执行alert()
)。
编辑:正如@Bharadwaj在评论中指出的那样,p*div
的符号是错误的,永远不会匹配。原因是,*
是placeholder for an element name,因此必须用空格包围。
答案 1 :(得分:4)
在此HTML中:
<div>
<p>Paragraph 1</p>
<div>
<p>Paragraph 2</p>
</div>
</div>
div p
选择两个段落,表示p
内任意位置的div
元素。
div * p
只有嵌套的一个,因为*
代表任何元素(因此p
内的任何元素内都有div
BTW p div
不应匹配任何内容,因为您在段落中不能包含块级元素。浏览器在解析DOM时打开块级元素之前关闭<p>
元素:http://jsfiddle.net/21ru2x5c/1/