Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:按类获取元素,但跳过某个类_Javascript_Css Selectors - Fatal编程技术网

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

Javascript:按类获取元素,但跳过某个类,javascript,css-selectors,Javascript,Css Selectors,我想选择一个有特定类但没有特定其他类的元素。您可以使用一个很酷的CSS3选择器来实现这一点 self.tabs.querySelector('.active:not(.dropdown)') 但这在IE9中不起作用-所以我正在寻找类似的东西 self.tabs.querySelector('.active') && !self.tabs.querySelector('.dropdown') 感谢您的建议。对于这种特殊情况,切换选项卡,我们不需要循环来过滤所需的确切元素,因为活

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

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中实际工作。谢谢。我看看我能做什么。