jQuery 中有没有办法循环遍历或分配给数组的所有分配给元素的类?
前任。
<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>
我将在上面的“dolor_spec”中寻找一个“特殊”类。我知道我可以使用 hasClass() 但当时可能不一定知道实际的类名。
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 页面还包含一个 shim - 尽管即使是 shim 也无法在 IE 8 以下的 Internet Explorer 版本上工作。
这是一个 jQuery 插件,它将返回匹配元素所具有的所有类的数组
;!(function ($) {
$.fn.classes = function (callback) {
var classes = [];
$.each(this, function (i, v) {
var splitClassName = v.className.split(/\s+/);
for (var j = 0; j < splitClassName.length; j++) {
var className = splitClassName[j];
if (-1 === classes.indexOf(className)) {
classes.push(className);
}
}
});
if ('function' === typeof callback) {
for (var i in classes) {
callback(classes[i]);
}
}
return classes;
};
})(jQuery);
使用它就像
$('div').classes();
在你的情况下返回
["Lorem", "ipsum", "dolor_spec", "sit", "amet"]
您还可以将函数传递给要在每个类上调用的方法
$('div').classes(
function(c) {
// do something with each class
}
);
这是我设置用来演示和测试的 jsFiddle http://jsfiddle.net/GD8Qn/8/
;!function(e){e.fn.classes=function(t){var n=[];e.each(this,function(e,t){var r=t.className.split(/\s+/);for(var i in r){var s=r[i];if(-1===n.indexOf(s)){n.push(s)}}});if("function"===typeof t){for(var r in n){t(n[r])}}return n}}(jQuery);
你应该试试这个:
$("selector").prop("classList")
它返回元素的所有当前类的列表。