将相同的 class 添加到多个对象

Add same class to multiple Objects

我需要使用 jQuery 将单个 class 名称添加到多个对象。

我知道像这样向多个选择器添加 class:

$("#Div4 ,#Div5 ,#Div7 ,#Div8").addClass("something");

我尝试了以下代码,但它 class 仅适用于第一个对象。

$(a[i].source, a[i].canvas, a[i].target).addClass("something");

在上述情况下,class名称 something 仅应用于 a[i].source

想法?

假设a[i].source等实际引用了一个Node/Element,可以使用.add() to add them individually to a collection,即:

$(a[i].source).add(a[i].canvas).add(a[i].target).addClass('something');

这可能会不必要地冗长。您可以简单地构造一个数组并在 jQuery (credit to @Rory):

中依赖隐式迭代
$([a[i].source, a[i].canvas, a[i].target]).addClass('something');

然而,这并不是真正需要的。只使用原生 JS 怎么样? Array.prototype.forEach() and Element.classList 截至今天得到广泛支持:

ES6:

[a[i].source, a[i].canvas, a[i].target].forEach(el => el.classList.add('something'));

ES5(如果你需要向后兼容不支持 ES6 语法的浏览器):

[a[i].source, a[i].canvas, a[i].target].forEach(function(el) {
    el.classList.add('something');
});

与其尝试通过 id 获取它们,不如为您需要获取的元素添加默认值 class。

<div class="selectorClass"></div>
<span class="selectorClass"></span>

然后 使用 jquery

$(".selectorClass").addClass("something")