我正在尝试创建一个将类添加到列表的循环。我希望将此类添加到除单击元素之外的所有元素上。我在互联网上找到了以下内容:
$('.elements').click(function(){
$('.elements').not(this).each(function(){
// do something
});
})
Run Code Online (Sandbox Code Playgroud)
有相当于香草的JavaScript吗?我找不到来自.not()的转换。
最接近的等价物可能是Array.prototype.filter它允许您使用函数测试数组的每个元素:
var elementToExclude = something;
arrayOfElements.filter(function (elem) {
return elem !== elementToExclude;
}).forEach(doSomething);
Run Code Online (Sandbox Code Playgroud)
您发布的完整代码的原始版本将是这样的。相当详细的TBH,而无需帮助程序向每个el添加点击侦听器。
var 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);
});
});
Run Code Online (Sandbox Code Playgroud)