2014-06-19 41 views
2

如果我有一个div,其中有多个类分配给class属性,是否可以使用jQuery中的each()函数遍历它们?遍历同一元素上的类

<div class="class1 differentclassname anotherclassname"><div> 
+3

像'$的DOMTokenList转换成Array ('div')。prop('className')。split('').forEach(fn)'? – undefined

+0

@undefined我更新了我的问题,因为我忘记说我不知道​​将使用的类名称,因为他们被放在dynmacially –

+0

@CurtisCrewe - 这应该不会影响什么undefined说(你分割className属性,然后通过列表进行forEaching。应该可以正常工作(即使您之前不知道类名称) – Jack

回答

8

在JavaScript中,得到的类列表,你可以使用

  • .className.split(' '),返回Array
  • (HTML5).classList,返回DOMTokenList

在jQuery中,你可以使用.prop()可获得classNameclassList属性。

要迭代它们,你可以使用:

  • 一个for循环,例如for(var i=0; i<classes.length; ++i)
  • (ES6)A for...of loop,例如, for(var cl of classes)
  • (ES5)forEach,仅适用于阵列,例如, classes.forEach(fn)
  • (jQuery)$.each,例如, $.each(classes, fn)

如果使用classList但想用forEach迭代,你可以使用

  • [].slice.call(classes)
  • (ES6)Array.from(classes)
+0

这样有帮助的详细了解!谢谢 –

+0

请记住,JavaScript中的forEach是IE9 +,我总是被捕获使用它,并且我很难理解为什么我的代码在旧版浏览器中被破坏。 +1的详细答案:) – Prusprus

+0

那么哪个prop()是正确的? '.prop('class')'或'.prop('className')'或'.prop('classList')' –

2

首先,你需要获得一个包含有类的字符串:

$('div').attr('class'); 

,并用空格分开它来获取一个数组:

$('div).attr('class').split(' '); 

,然后使用数组作为$ .each函数的第一个参数,其中索引和值可以帮助您独立处理它

$.each($('div').attr('class').split(' '), function(index, value) { 
    console.log('Class name ' + value); 
}); 
+0

更好:' $( 'DIV).attr(' 类)。split('\ s +');'如果class属性有多个连续空格或其他空格字符。 –