使用jQuery获取第一个和最后一个类

8
可能是一个新手问题。我有一行代码如下:
<div class="template active">

我需要单独获取每个类。

我尝试了以下代码:

$(this).attr("class");

从那段代码中,我得到了"template active"。我需要的是一个字符串包含"template"和另一个字符串包含"active"。

什么是最好的jQuery函数来实现这个功能?有例子吗?


3
试试这个...$(this).attr("class").split(" "); 该代码意思为获取当前元素的class属性值并通过空格拆分成数组形式。 - Vivek
很多人都建议这样做,而且它确实有效。谢谢,点赞。 - Jens Törnell
7个回答

14
var classes = $(this).attr("class").split(/\s/);

classes[0] === 'template'
classes[1] === 'active'

如果有超过两个类名,而你只想获取第一个和最后一个(这就是你的问题),那么可以调用:

classes[0] = first class
classes[classes.length -1] = last class

".split(/\s/)和.split(" ")有什么区别?" - Jens Törnell
2
@Jens:/\s/ 匹配所有可能的空白字符,而不仅仅是空格。 - jAndy

7
var class= $(this).attr("class").split(" ").pop();

5

你可以使用JavaScript的split()方法:

var classes = $(this).attr("class").split(" ");

1
如果您想检查一个HTML元素是否有一个类,您可以使用.hasClass('classname'),它会返回true或false。
否则,如果您想查看一个列表,我认为您需要将字符串拆分成数组。刚刚发布的另外两个答案会向您展示如何做到这一点。 :)

我尝试了hasClass,但在我的情况下它没有起作用。在其他情况下效果很好。无论如何,我会给你一个赞。 - Jens Törnell

0
var class= $(this).attr("class").split(" ")  
(for i in class)
{ alert(class[i])}

0

你也可以使用 map 来实现这个功能:

var ArrayData = $.map($(this).attr("class").split(' '), function(value){
    return value;
});

alert("first class = '"+ArrayData[0]+"'");
alert("last class = '"+ArrayData[ArrayData.length - 1]+"'");

请参考在线演示


0

我认为this是最简单的方法。

$(".element").last().addClass("highlight");

1
我认为这会给最后一个元素添加一个“highlight”的类。原帖作者似乎想要访问最后一个类名,而不是最后一个元素。 - Squig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接