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

时间:2019-02-05 10:45:56

标签: javascript jquery html jsplumb

我需要使用jQuery向多个对象添加单个类名。

我知道要向这样的多个选择器添加一个类:

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

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

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

在上述情况下,类名something仅适用于a[i].source

有想法吗?

2 个答案:

答案 0 :(得分:4)

假设a[i].source等实际上引用了节点/元素,则可以使用.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()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');
});

答案 1 :(得分:0)

与其试图通过id来获取它们,不如将一个默认类添加到您需要获取的元素中。

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

然后 使用jQuery

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