后代选择器和jQuery中的选择器有什么区别?
Descendant选择器和:has选择器有什么区别?
从文档:
后代选择器
描述:选择作为给定祖先后代的所有元素。
元素的后代可以是该元素的子元素,孙子元素,曾孙子元素等等。
:具有
描述:选择包含至少一个与指定选择器匹配的元素的元素。
表达式
$('div:has(p)')
匹配如果存在于其后代中的任何位置,而不仅仅是直接子项。
即使在阅读了解释之后,差异也不明确。 有人可以帮我理解吗?
div p
的后代选择器选择div p
的p
后代。
:has()
div:has(p)
:has()
选择器div:has(p)
如果包含任何p
元素,则选择div
。大胆的部分是您需要知道的。 其余的可以看作是选择这些类型的哪些元素的条件 。
在CSS选择器术语中, 键选择器是最右侧的外部简单选择器。 jQuery(或浏览器的CSS解析器)拾取的元素类型是键选择器中的元素。
在第一个选择器中,键是
p
,因为它是最右边的一个,发生在后代组合子(空格)之后。 这意味着将返回p
元素的集合。对于
:has()
,它是一个伪类,p
是一个“内部”简单选择器,它是:has()
伪类的一部分,不是整个“外部”选择器的一部分。 因此选择器中的键是div
,而不是p
。 这意味着将返回div
元素的集合,而不是p
一个选择器中的p
元素。
descendants
-selector将选择实际的后代,而:has
-selector将选择包含has()中元素的父元素。