协慌网

登录 贡献 社区

使用 jQuery 获取元素的类列表

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

前任。

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

我将在上面的 “dolor_spec” 中寻找 “特殊” 类。我知道我可以使用 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

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

$(element)[0].classList

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

如果您需要支持不支持classList属性的旧版本浏览器,则链接的 MDN 页面还包含一个填充程序 - 尽管即使该填充程序也无法在 IE 8 以下的 Internet Explorer 版本上运行。