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

ex.

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

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


当前回答

在支持的浏览器上,你可以使用DOM元素的classList属性。

$(element)[0].classList

它是一个类似数组的对象,列出元素的所有类。

如果您需要支持不支持classList属性的旧浏览器版本,则链接的MDN页面还为它包含了一个shim -尽管即使是shim也不能在ie8以下的Internet Explorer版本上工作。

其他回答

你应该试试这个:

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

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

$('div').attr('class').split(' ').each(function(cls){ console.log(cls);})

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

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

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

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

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

javascript为dom中的节点元素提供了classList属性。简单的使用

  element.classList

将返回form对象

  DOMTokenList {0: "class1", 1: "class2", 2: "class3", length: 3, item: function, contains: function, add: function, remove: function…}

该对象具有您可以使用的包含、添加、删除等函数

你可以使用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
    }
});