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
give
0
但是,
$(div*p).length
give
1
@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')
选择嵌套元素。