我正在尝试创建一个循环,将类添加到列表中。我希望这个类被添加到除被点击的元素外的所有元素上。我在网上找到了以下内容:
$('.elements').click(function(){
$('.elements').not(this).each(function(){
// do something
});
})
是否有类似于原生JavaScript的替代品?我找不到从.not()转换的方法。
我正在尝试创建一个循环,将类添加到列表中。我希望这个类被添加到除被点击的元素外的所有元素上。我在网上找到了以下内容:
$('.elements').click(function(){
$('.elements').not(this).each(function(){
// do something
});
})
是否有类似于原生JavaScript的替代品?我找不到从.not()转换的方法。
最接近的等价物可能是Array.prototype.filter
,它允许您使用一个函数测试数组的每个元素:
var elementToExclude = something;
arrayOfElements.filter(function (elem) {
return elem !== elementToExclude;
}).forEach(doSomething);
[].filter.call(arrayOfElements, function(elem){})
)。我知道你说了arrayOfElements
,只是想指出给其他人阅读。 - benhowdle89.get()
,你最终会得到什么数组。 - James AllardiceArray.prototype.filter.call(nodeList, function() {})
来处理 NodeList 元素。 - Eriksvar els = document.querySelectorAll('.elements');
[].forEach.call(els, function(el, i, els) {
el.addEventListener('click', function() {
[].forEach.call(els, function(el) {
if(el !== this) {
// do something
}
}, this);
});
});