后代选择器和jQuery中的选择器有什么区别?

Mar*_*kis 2 javascript jquery jquery-selectors

Descendant选择器:has选择器有什么区别?

从文档:

后代选择器

描述:选择作为给定祖先后代的所有元素.

元素的后代可以是该元素的子元素,孙子元素,曾孙子元素等等.

:具有

描述:选择包含至少一个与指定选择器匹配的元素的元素.

表达式$('div:has(p)')匹配<div>if <p>在其后代中的任何位置,而不仅仅是直接子项.

即使在阅读了解释之后,差异也不明确.有人可以帮我理解吗?

Bol*_*ock 10

后代选择器div p 选择的p后代div.

所述:has()选择器在div:has(p) 选择div,如果它包含任何p元素.

大胆的部分是您需要知道的.其余的可以看作是选择这些类型的哪些元素的条件.


在CSS选择器术语中,键选择器是最右侧的外部简单选择器.jQuery(或浏览器的CSS解析器)拾取的元素类型是键选择器中的元素.

在第一个选择器中,键是p,因为它是最右边的一个,发生在后代组合子(空间)之后.这意味着p将返回元素集合.

在的情况下:has(),这是一个伪类中,p是一个"内部"简单选择器,其是所述的部分:has()伪类,而不是整个"外"选择器的一部分.因此div,选择器中的关键不是p.这意味着div将返回元素集合,而不是p第一个选择器中的元素.