如果我有一个div,其中有多个类分配给class
属性,是否可以使用jQuery中的each()
函数遍历它们?遍历同一元素上的类
<div class="class1 differentclassname anotherclassname"><div>
如果我有一个div,其中有多个类分配给class
属性,是否可以使用jQuery中的each()
函数遍历它们?遍历同一元素上的类
<div class="class1 differentclassname anotherclassname"><div>
在JavaScript中,得到的类列表,你可以使用
.className.split(' ')
,返回Array
.classList
,返回DOMTokenList
在jQuery中,你可以使用.prop()
可获得className
或classList
属性。
要迭代它们,你可以使用:
for
循环,例如for(var i=0; i<classes.length; ++i)
for...of
loop,例如, for(var cl of classes)
。forEach
,仅适用于阵列,例如, classes.forEach(fn)
$.each
,例如, $.each(classes, fn)
如果使用classList
但想用forEach
迭代,你可以使用
[].slice.call(classes)
Array.from(classes)
这样有帮助的详细了解!谢谢 –
请记住,JavaScript中的forEach是IE9 +,我总是被捕获使用它,并且我很难理解为什么我的代码在旧版浏览器中被破坏。 +1的详细答案:) – Prusprus
那么哪个prop()是正确的? '.prop('class')'或'.prop('className')'或'.prop('classList')' –
首先,你需要获得一个包含有类的字符串:
$('div').attr('class');
,并用空格分开它来获取一个数组:
$('div).attr('class').split(' ');
,然后使用数组作为$ .each函数的第一个参数,其中索引和值可以帮助您独立处理它
$.each($('div').attr('class').split(' '), function(index, value) {
console.log('Class name ' + value);
});
更好:' $( 'DIV).attr(' 类)。split('\ s +');'如果class属性有多个连续空格或其他空格字符。 –
像'$的
DOMTokenList
转换成Array
('div')。prop('className')。split('').forEach(fn)'? – undefined@undefined我更新了我的问题,因为我忘记说我不知道将使用的类名称,因为他们被放在dynmacially –
@CurtisCrewe - 这应该不会影响什么undefined说(你分割className属性,然后通过列表进行forEaching。应该可以正常工作(即使您之前不知道类名称) – Jack