使用ES6

时间:2016-08-23 14:18:04

标签: javascript jquery-selectors ecmascript-6

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

例如,使用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) {
	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>
&#13;
&#13;
&#13;

我如何使用ES6执行此操作?选择器有一个助手吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

Array.from(document.getElementsByClassName("item")).some(({classList}) =>
   classList.contains('active'))

可能是最好的ES6可以提供的,这与上面的代码基本相同。

答案 1 :(得分:3)

它与ES2015无关,但您可以像基本的jQuery API一样使用document.querySelector()

 var isActive = document.querySelector(".item.active") != null;

答案 2 :(得分:2)

你真的不需要ES6在vanilla JS中做同样的事情。

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

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

答案 3 :(得分:0)

您可以在节点列表上.find()并返回第一个真实结果。

const activeEl = Array.prototype.find.call (items, item => item.classList.contains('active'));