多个带有原型的 CSS 选择器

Multiple CSS Selectors with Prototype

本文关键字:CSS 选择器 原型      更新时间:2023-09-26

我正在重构一些目前看起来像这样的代码:

$$('#wrapper > div').each(function(e){ 
    if((e.id!='header') && (e.id!='footer') && (e.id!='content')){
        // various other stuff here
    }
});

我想将初始选择器切换并检查 ID 到一行,大致如下:

$$('#wrapper > div[id!=header]', '#wrapper > div[id!=content]', '#wrapper > div[id!=footer]')
多个选择器

不起作用,每个选择器本身工作正常。不确定这是否是语法问题,或者原型文档所说的应该有效,但是一旦我添加了额外的选择器,就没有工作了。

要确认此操作是否有效:

$$('#wrapper > div[id!=header]')

这有效:

$$('#wrapper > div[id!=footer]')

但这无法选择任何一个(不抛出错误)

$$('#wrapper > div[id!=header]', '#wrapper > div[id!=footer]')

这两个代码片段做完全不同的事情。与顶部代码段等效的应该是这样的:

$$('#wrapper > div[id!=header][id!=footer][id!=content]')

您的选择器将选择所有具有id的div,因为那些"footer"的div将在"不header"下选择。

您可以将选择器相互追加div[attr selector 1][attr selector 2]请参阅以下示例小提琴。

您最初尝试的问题。 即使用逗号分隔选择器,是它们OR -ing。 因此,即使您指定了所有三个,其他每个都将返回其他尝试排除的内容。