Javascript:按类获取元素但跳过某个类

时间:2015-03-21 19:41:21

标签: javascript css-selectors

我想选择一个具有某个类但没有某个其他类的元素。你可以用一个很酷的CSS3选择器

来做到这一点
self.tabs.querySelector('.active:not(.dropdown)')

但这在IE9中不起作用 - 所以我正在寻找类似的东西

self.tabs.querySelector('.active') && !self.tabs.querySelector('.dropdown')

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

对于这种特殊情况,切换标签,我们不需要循环来过滤我们需要的确切元素,因为永远不会有超过2个active元素,并且它只够使用一级子导航。总而言之,代码看起来像这样。

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
}

希望这有助于某人。