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

Javascript: get element by class but skip a certain class

本文关键字:元素 获取 Javascript      更新时间:2023-09-26

我想选择一个有特定类但没有特定其他类的元素。你可以用一个很酷的CSS3选择器来做到这一点

self.tabs.querySelector('.active:not(.dropdown)')

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

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

谢谢你的建议。

对于这种特定的情况,切换选项卡,我们不需要循环来过滤我们需要的确切元素,因为active元素永远不会超过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
}

希望这能帮助到别人。