2016-08-23 12 views
2

NodeListの要素に特定のクラスがあるかどうかをチェックします。どのようにNodeList内の要素にES6を使用して特定のクラスがあるかどうかをチェックします。

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>

:私は何ができるJavaScriptのみで

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

が、やや長いコード付き:jQueryを使って私はちょうどような何かを例えば

、 ES6でこれを行うことはできますか?セレクターのためのヘルパーがありますか?

ありがとうございます!

+2

「セレクタにはヘルパーがありますか?」いいえ、ありません。セレクタはWeb APIの一部ですが、JSはセレクタをサポートしていません。 – Teemu

+3

ES6(ES2015)は、実際にはDOM操作やCSSセレクタとは関係ありません。それらはブラウザ環境の機能です。 – Pointy

答えて

3

それはES2015とは何の関係もありませんが、あなたは非常に基本的なjQueryのAPIのようなdocument.querySelector()を使用することができます。

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'); 
関連する問題