$("div p")是否相当于$("div*p")?

Bre*_*k89 3 jquery jquery-selectors

明星运算符似乎会递归所有选定的孩子,这与空间相同.我发现这个空间就像一个操作员,但$("div p")做同样的事情很奇怪$("div*p").

Bol*_*wyn 7

不,这不等同.星形运算符意味着至少需要一个元素位于它们之间.等价的选择器表达式

p * div, p > div
Run Code Online (Sandbox Code Playgroud)

匹配两种情况.选择器级别4很可能会引入另一个运营商

p >> div
Run Code Online (Sandbox Code Playgroud)

这确实相当于p<space>div.

对于jQuery部分:如果您编写$('p div')或任何其他选择器,您将熟悉HTML中的自动关闭元素.在这种特定情况下:div元素不能在p元素内部.浏览器会p在遇到时自动关闭div.如果你从这开始:

<p>
    <div></div>
</p>
Run Code Online (Sandbox Code Playgroud)

你的DOM看起来像这样:

<p></p>
<div></div>
<p></p>
Run Code Online (Sandbox Code Playgroud)

因此,从来没有任何匹配的p div,p * div......看到这个的jsfiddle(注意:将两次做的alert()).

编辑:正如@Bharadwaj在评论中指出的那样,符号p*div是一个错误,永远不会匹配.原因是,这*元素名称占位符,因此必须用空格包围.