jQuery中是否有一种方法可以循环遍历或分配给数组中所有被分配给元素的类?

ex.

<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>

我将寻找一个“特殊”类,如上面的“dolor_spec”。我知道我可以使用hasClass(),但实际的类名可能并不一定知道。


当前回答

你应该试试这个:

$("selector").prop("classList")

它返回元素当前所有类的列表。

其他回答

更新:

正如@莱恩·伦纳德指出的那样,我的回答并没有真正解决我自己提出的问题……你需要修剪和删除双空格(例如)字符串。替换(/ +/g, " ")..或者你可以分开坐电车。然后使用(例如)arr.filter(Boolean)删除空值。

const classes = element.className.split(' ').filter(Boolean);

或者更现代

const classes = element.classList;

旧:

对于所有给出的答案,你不应该忘记使用.trim()(或$.trim())

因为类会被添加和删除,所以在类字符串之间可能会有多个空格。如。'class1 class2 class3'..

这将变成[class1, class2 ','','','', ' 类别3 ']. .

当你使用修剪,所有的多个空格被删除。

你应该试试这个:

$("selector").prop("classList")

它返回元素当前所有类的列表。

获取应用于元素的类列表,我们可以使用

$('#elementID').prop('classList')

要添加或删除任何类,我们可以按照下面的步骤。

$('#elementID').prop('classList').add('yourClassName')
$('#elementID').prop('classList').remove('yourClassName')

为了简单地检查类是否存在,我们可以使用hasClass

你可以使用document.getElementById('divId').className.split(/\s+/);得到一个类名数组。

然后您可以迭代并找到您想要的。

var classList = document.getElementById('divId').className.split(/\s+/);
for (var i = 0; i < classList.length; i++) {
    if (classList[i] === 'someClass') {
        //do something
    }
}

jQuery在这里并不能真正帮助你…

var classList = $('#divId').attr('class').split(/\s+/);
$.each(classList, function(index, item) {
    if (item === 'someClass') {
        //do something
    }
});

为什么没有人简单的上市。

$(element).attr("class").split(/\s+/);

编辑:分裂/\s+/而不是' '修复@MarkAmery的反对。(谢谢@YashaOlatoto。)