我觉得这是一个奇怪的问题,我什至都不知道如何写。 好吧,我必须使用 querySelectorAll() 过滤一大堆元素。我需要,但真的不知道是否可能,做这样的事情(假代码):
[data-attr1=a][data-attr2=b]([data-attr3*=c], [data-attr4*=d])
请注意括号,并且逗号仅在括号内。 换句话说,我希望我的元素被过滤如下:
“所有结果元素必须同时具有
data-attr1=a AND data-attr2=b
,AND
还必须具有 data-attr3*=c OR data-attr4*=d
”.
这可能吗?有没有合适的语法?也许像这样就足够了,但真的很冗长:
[data-attr1=a][data-attr2=b][data-attr3*=c],
[data-attr1=a][data-attr2=b][data-attr4*=d]
对吗?有更好的语法吗?
我刚刚找到了 css 部分的答案。不确定 querySelectorAll 是否会接受它:我可以使用 'new' :is() 或 :where() 语法:
[data-attr1=a][data-attr2=b]:is([data-attr3*=c], [data-attr4*=d])
这将准确选择我正在搜索的内容。