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

发布于 2024-10-18 12:59:02 字数 584 浏览 1 评论 0原文

后代选择器:有选择器

从文档中:

后代选择器

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

元素的后代可以是该元素的子元素、孙子元素、曾孙元素等。

:有

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

如果

存在,则表达式 $('div:has(p)')

匹配其后代中的任何地方,而不仅仅是直接子代。

即使阅读了解释后,我也不清楚其中的区别。有人可以帮我理解吗?

What is the difference between the Descendant selector and the :has selector?

From the documentation:

Descendant selector

Description: Selects all elements that are descendants of a given ancestor.

A descendant of an element could be a child, grandchild, great-grandchild, and so on, of that element.

:has

Description: Selects elements which contain at least one element that matches the specified selector.

The expression $('div:has(p)') matches a <div> if a <p> exists anywhere among its descendants, not just as a direct child.

Even after reading the explanation, the difference is not clear to me. Can someone help me understand?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱冒险 2024-10-25 12:59:02

div p 中的后代选择器选择 divp 后代。

div:has(p) 中的 :has() 选择器选择 div(如果它包含任何 p 元素。

粗体部分就是您需要了解的全部内容。其余的可以看作仅仅是选择这些类型的元素的条件


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

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

对于伪类 :has() 来说,p 是一个“内部”简单选择器,是 的一部分:has() 伪类,不是整个“外部”选择器的一部分。因此,该选择器中的键是 div,而不是 p。这意味着将返回 div 元素的集合,而不是第一个选择器中的 p 元素。

The descendant selector in div p selects the p descendants of the div.

The :has() selector in div:has(p) selects the div if it contains any p elements.

The bold parts are all you need to know. The rest can be seen as mere conditions as to which elements of those types are selected.


In CSS selector terms, the key selector is the right-most outer simple selector. The kind of elements that get picked up by jQuery (or by a browser's CSS parser) is the one in the key selector.

In the first selector, the key is p, because it's the right-most one, occurring after the descendant combinator (the space). This means a collection of p elements will be returned.

In the case of :has(), which is a pseudo-class, the p is an "inner" simple selector that is part of the :has() pseudo-class, not part of the entire "outer" selector. The key in that selector is therefore div, not p. This means a collection of div elements will be returned, rather than p elements in the first selector.

南风起 2024-10-25 12:59:02

descendants-选择器将选择实际后代,而:has-选择器将选择包含该元素的父元素有()。

The descendants-selector will select the actual descendants, while the :has-selector will select the parent element(s) that contain the element within the has().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文