使用jQuery获取指定div的class名时each函数无法仅返回类名怎么办
问题原因
- jQuery的
each()方法本身返回的是你最初选中的jQuery元素集合,并非回调函数内部的返回值,你直接把each()的返回值赋值给ClassNames,拿到的自然是所有匹配#list .names的元素对象,不是你要的类名字符串。 - 你在回调函数里获取了
$(this).attr('class')但没有做收集存储操作,这个值执行完就被丢弃,没有汇总到最终的变量里。
正确实现方案
你可以用map()方法替代each(),这个方法专门用于遍历集合并收集返回值,再调用get()转成普通数组就能拿到所有类名:
var ClassNames = $("#list .names").map(function() { return $(this).attr('class'); }).get();
如果你更习惯用each(),可以提前声明一个空数组做存储,遍历的时候把类名推进数组即可:
var ClassNames = []; $("#list .names").each(function() { ClassNames.push($(this).attr('class')); });
补充说明
如果目标元素上有多个类名,attr('class')会返回空格分隔的全类名字符串,如果你需要拆分单个类名,可以自行加split(' ')处理。
内容的提问来源于stack exchange,提问作者Pepe
相关产品推荐
相关产品推荐

