0

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

$$('#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]')
4

2 回答 2

2

您可以将选择器彼此附加div[attr selector 1][attr selector 2] 请参阅以下示例小提琴

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

于 2012-05-14T13:37:08.053 回答
2

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

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

您的选择器将选择所有具有 的 div id,因为那些是“ footer”的 div 将在“非”下被选中header

于 2012-05-14T13:37:26.597 回答