我正在重构一些目前看起来像这样的代码:
$$('#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]')
尽管多个选择器不起作用,但每个选择器本身都可以正常工作。不确定这是语法问题还是Prototype docs说这应该有效,但是一旦我添加额外的选择器,那么就没有任何作用。
要确认此操作有效:
$$('#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
”将在“not header
”下被选择。
关于javascript - 带有原型(prototype)的多个 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584195/