Jquery 为什么'li a'和'li:has(a)`不同?

Jquery 为什么'li a'和'li:has(a)`不同?,jquery,jquery-selectors,Jquery,Jquery Selectors,在应用li时,a和li:has(a)会显示不同的结果。但是,为什么呢?他们不应该做同样的事情吗 他们不应该做同样的事情吗 否。在第一个示例中,您选择了li中的所有a;在第二个选项中,您将选择所有具有a的li 我的重点是: 描述:选择至少包含一个与指定选择器匹配的元素的元素 表达式$('div:has(p)与匹配,前提是存在于其子代中的任何位置,而不仅仅是直接子代 他们不应该做同样的事情吗 否。在第一个示例中,您选择了li中的所有a;在第二个选项中,您将选择所有具有a的li 我的重点是: 描述:选

在应用
li时,a
li:has(a)
会显示不同的结果。但是,为什么呢?他们不应该做同样的事情吗

他们不应该做同样的事情吗

否。在第一个示例中,您选择了
li
中的所有
a
;在第二个选项中,您将选择所有具有
a
li

我的重点是:

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

表达式
$('div:has(p)
匹配,前提是
存在于其子代中的任何位置,而不仅仅是直接子代

他们不应该做同样的事情吗

否。在第一个示例中,您选择了
li
中的所有
a
;在第二个选项中,您将选择所有具有
a
li

我的重点是:

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

表达式
$('div:has(p)
匹配,前提是
存在于其子代中的任何位置,而不仅仅是直接子代


li a
匹配具有li祖先的所有a元素
li:has(a)
匹配所有具有a后代的li元素。@Šime Vidas。你能进一步澄清这一区别吗?显然,我曾经在这里为同一个问题写过一个充满行话的答案:但是关于佩卡答案的评论对你来说应该足够简单。
li a
匹配所有具有li祖先的a元素
li:has(a)
匹配所有具有a后代的li元素。@Šime Vidas。你能进一步澄清这一区别吗?显然,我曾经在这里为同一个问题写过一个充满行话的答案:但是关于佩卡答案的评论对你来说应该足够简单。当你说:在第一个例子中,你选择了a
li
中的所有
a
;在第二个示例中,您选择了所有具有
a
li
,这仍然有点混乱。当我在
li
中选择所有
a
时,这是否意味着
li
必须包含一个
a
,否则它将不会被选择,这与第二个相同?你能简化一下吗?Thanks@Med-使用第一个选择器可以得到一个元素,使用第二个选择器可以得到LI元素。这就是区别…@MedŠime说得很好。这样的区别清楚吗?“has”是
li
的一个属性。它的字面意思是
给我所有li元素,这些元素至少有一个子元素的类型为“a”
。当你说:在第一个例子中,你选择了a
li
中的所有
a
;在第二个示例中,您选择了所有具有
a
li
,这仍然有点混乱。当我在
li
中选择所有
a
时,这是否意味着
li
必须包含一个
a
,否则它将不会被选择,这与第二个相同?你能简化一下吗?Thanks@Med-使用第一个选择器可以得到一个元素,使用第二个选择器可以得到LI元素。这就是区别…@MedŠime说得很好。这样的区别清楚吗?“has”是
li
的一个属性。它的字面意思是
给我所有li元素,这些元素至少有一个子元素类型为“a”