Javascript:按类获取元素,但跳过某个类
我想选择一个有特定类但没有特定其他类的元素。您可以使用一个很酷的CSS3选择器来实现这一点Javascript:按类获取元素,但跳过某个类,javascript,css-selectors,Javascript,Css Selectors,我想选择一个有特定类但没有特定其他类的元素。您可以使用一个很酷的CSS3选择器来实现这一点 self.tabs.querySelector('.active:not(.dropdown)') 但这在IE9中不起作用-所以我正在寻找类似的东西 self.tabs.querySelector('.active') && !self.tabs.querySelector('.dropdown') 感谢您的建议。对于这种特殊情况,切换选项卡,我们不需要循环来过滤所需的确切元素,因为活
self.tabs.querySelector('.active:not(.dropdown)')
但这在IE9中不起作用-所以我正在寻找类似的东西
self.tabs.querySelector('.active') && !self.tabs.querySelector('.dropdown')
感谢您的建议。对于这种特殊情况,切换选项卡,我们不需要循环来过滤所需的确切元素,因为活动的
元素永远不会超过2个,只需使用一级子导航就足够了。总之,代码应该是这样的
var activeTabs = self.tabs.querySelectorAll('.active');
if ( activeTabs.length === 1 && !activeTabs[0].classList.contains('dropdown') ) {
return activeTabs[0]
} else if ( activeTabs.length > 1 ) {
return activeTabs[1]
// or return activeTabs[activeTabs.length-1]
// in case we need the exact item that is relevant to the tab content and is on even deeper level
}
希望这对其他人有所帮助。如果没有选择器,我会假设您只是根据它们拥有的类在循环中过滤结果。非伪选择器应该在IE9+中工作。如果你需要支持pre-IE9,那么你必须像前面的海报所说的那样在js中进行过滤。这取决于你需要做什么,但我同意@AR7首先在集合中获取你需要的元素,然后通过JQuery.hasClass('dropdown')循环它们来获取你需要的集合。同样,not选择器应该在IE9中实际工作。谢谢。我看看我能做什么。