2016-08-23 56 views
2

我想检查NodeList中的任何元素是否具有特定的类。检查NodeList中的任何元素是否具有使用ES6的特定类

例如,使用jQuery我只是这样做:

//if any .item element has active class, return true 
var isActive = $(".item").hasClass("active"); 

只有使用Javascript我能做到,但稍长代码:

var isActive = false; 
 
var items = Array.from(document.getElementsByClassName("item")); 
 

 
items.forEach(function(item, index) { 
 
    if(item.className.indexOf('active') > 0) { 
 
\t isActive = true; 
 
    } 
 
}); 
 

 
alert(isActive);
<div class="item">1</div> 
 
<div class="item">2</div> 
 
<div class="item active">3</div> 
 
<div class="item">4</div>

如何我可以用ES6来做这个吗?有选择器的帮手吗?

谢谢!

+2

“有选择器的帮手吗?”不,没有。选择器是Web API的一部分,JS不支持选择器。 – Teemu

+3

ES6(ES2015现在)确实与DOM操作或CSS选择器没有任何关系;这些是浏览器环境功能。 – Pointy

回答

3

它无关ES2015,但你可以使用document.querySelector()很像基本jQuery的API:

var isActive = document.querySelector(".item.active") != null; 
4
Array.from(document.getElementsByClassName("item")).some(({classList}) => 
    classList.contains('active')) 

可能是最好的ES6可以给你,这基本上与你的代码相同。

+0

我觉得'el => el.classList。...'比这里的解构更加地道 – Bergi

2

你并不真的需要ES6做同样的事情在香草JS。

// jQuery 
var isActive = $(".item").hasClass("active"); 

// Plain JavaScript 
var isActive = document.querySelector('.item').classList.contains('active'); 
相关问题