Jquery 美元(div p)是否等于美元(div*p)?
星形运算符似乎递归所有选定的子对象,这与空间中发生的情况相同。我觉得很奇怪,空格就像一个操作符,但它与操作符做的事情是一样的。星形运算符意味着它们之间至少需要一个元素。一个等价的选择器表达式是Jquery 美元(div p)是否等于美元(div*p)?,jquery,jquery-selectors,Jquery,Jquery Selectors,星形运算符似乎递归所有选定的子对象,这与空间中发生的情况相同。我觉得很奇怪,空格就像一个操作符,但它与操作符做的事情是一样的。星形运算符意味着它们之间至少需要一个元素。一个等价的选择器表达式是 p * div, p > div 匹配两种情况。很可能会引入另一个操作员 p >> div 这实际上相当于pdiv 对于jQuery部分:如果您编写$('p div')或任何其他选择器,您将熟悉HTML中的自动关闭元素。在此特定情况下:div元素不能位于p元素内。当遇到div时,浏览
p * div, p > div
匹配两种情况。很可能会引入另一个操作员
p >> div
这实际上相当于pdiv
对于jQuery部分:如果您编写$('p div')
或任何其他选择器,您将熟悉HTML中的自动关闭元素。在此特定情况下:div
元素不能位于p
元素内。当遇到div
时,浏览器将自动关闭p
。如果您从以下内容开始:
<p>
<div></div>
</p>
您的DOM将如下所示:
<p></p>
<div></div>
<p></p>
因此从不匹配任何p div
,p*div
。。。查看此信息(注意:将执行两次警报()
)
编辑:正如@Bharadwaj在评论中指出的那样,p*div
的符号是错误的,永远不会匹配。原因是,*
是一个空格,因此必须用空格包围。在此HTML中:
<div>
<p>Paragraph 1</p>
<div>
<p>Paragraph 2</p>
</div>
</div>
第1款
第2款
div p
选择两个段落,它表示p
元素位于div
中的任何位置div*p
仅嵌套一个,因为*
代表任何元素(因此p
在div
中的任何元素中)
顺便说一句,p div不应该匹配任何内容,因为段落中不能有块级元素。在分析DOM时打开块级元素之前,浏览器先关闭
元素:nope$(“div p”)
和$(“div*p”)
没有给出相同的结果(在当前页面控制台中记录这两个选择器)。在jQuery
中询问OP时,我尝试了jQuery
中的,提示。length
,如果我使用*
,我得到了0
!记录div p的2
和div*p的1
。如果您尝试使用div位于p
中的第二个表单,它会正确记录两种情况下的0
:好的,我在示例中没有使用嵌套;)正如问题中的$(div*p).length
give0
但是,$(div*p).length
give1
@Bharadwaj空间不是可选的,否则div*.foo
和div*.foo
之间没有区别。或者,换一种方式,用任何其他选择器替换*
,例如div div p
有意义,但divdivp
没有意义。在jQuery
中使用*
不会为我选择任何选项!你有这方面的示例代码吗?大约一个JSFIDLE?我没有使用嵌套的divp
,所以我得到了0$('div*p')
将选择嵌套,但$('div*p')
(如前所述)即使存在一些项目也不会选择任何项目!我在fiddle、local machine和w3schools编辑器中尝试过,$('div*p')
选择无,而$('div*p')
选择嵌套元素。