为什么带有运算符 AND 的表达式在 css 选择器中不起作用

Why an expression with operator AND doesn't work in css selector

我写了两个 css 选择器表达式,它们看起来非常相似,只有一个变化。 我不明白为什么第二个不起作用:

1.

a>div[id='nav-cart-count-container']>span[id='nav-cart-count'].nav-cart-count
a>div[id='nav-cart-count-container']>span[id='nav-cart-count'][class='nav-cart-count']

我知道一个就够了,但我想同时了解它们。 因此,如果有人能向我解释写作 [class='nav-cart-count'] 有什么问题,我会很高兴,因为我看到了一个看起来相同且有效的示例:

input[key='something'][type='sometype']

这个

span[id='nav-cart-count'].nav-cart-count

表达式的字面意思是,我们正在定位具有 id 属性值 等于 nav-cart-countspan 元素,它 class nav-cart-count.
第二个表达式

span[id='nav-cart-count'][class='nav-cart-count']

表示具有 id 属性值 等于 nav-cart-countclass 属性值 span 元素等于 nav-cart-count.
因此,如果此 span 元素具有如下 class 属性值: nav-cart-count counter 第一个定位器表达式将匹配它,而第二个则不会!
要匹配这两种情况,您可以使用第一个表达式

span[id='nav-cart-count'].nav-cart-count

或者可以修改第二个表达式以搜索 contains 而不是 equals,像这样:

span[id='nav-cart-count'][class*='nav-cart-count']