2010-11-22 36 views
1

我想用类名得到数组的最后一个项。我的代码看起来像这样用jquery得到数组的最后一个类名

var getClassName = []; 
getClassName = $(this).attr('class').split(); 
console.log(getClassName); 

在控制台我成为得到这个答案

["classname1 classname2"] 

我怎样才能得到最后的类名?

感谢

+4

您的其他五个问题都没有收到可接受的答案吗? – 2010-11-22 09:37:08

回答

2

由于jensgram指出,你快到了;如果你想保持特定的jQuery,请看他的答案。

但是,你正在做的浏览器做了很多额外的工作,这是其中的时候,你真的不需要jQuery的一个:

var getClassName; 
getClassName = this.className.split(' '); 
console.log(getClassName[getClassName.length-1]); 

DOM元素的className property被所有主流浏览器的支持(也可能是所有次要的)。

尽管如此,除非你在紧密循环中这样做,$()attr调用的额外开销可能并不重要。

+0

这将是'this.className.split('');'但伟大的一点。 – jensgram 2010-11-22 09:40:31

+0

@jensgram:哇,我几乎马上就看到并修复了这个问题,谈论时间安排。 :-) – 2010-11-22 09:41:26

+0

@ T.J。 Crowder和我冒昧地改变我的性别:) – jensgram 2010-11-22 09:42:21

4
console.log(getClassName[getClassName.length-1]); 

Will do你需要一个参数传递给split()

var getClassName = $(this).attr('class').split(' '); 
var lastIndex = getClassName.length - 1; 
console.log(getClassName[lastIndex]); 

编辑:使用this.className
考虑使用this.className而不是$(this).attr('class')。这在other answers中提及。

Andy E对我们如何倾向于过度使用jQuery:Utilizing the awesome power of jQuery to access properties of an element做了很好的写作。该文章特别对待使用.attr("id"),但问题与$(...).attr('className')this.className相同。

可以甚至使用

var getClassName = (this.className || '').split(' '); 

,如果你不相信.className存在。

+0

抓到我的回答:) – 2010-11-22 09:39:19

+0

很酷。谢谢,那是我需要的方式。 – Peter 2010-11-22 09:41:50

+0

@Peter你应该真的关注@ T.J。 Crowder的建议并使用'this.className'而不是'.attr()'。我刚刚在[另一个线程]中提到了这一点(http://stackoverflow.com/questions/4243554/jquery-if-checkbox-is-checked-do-this/4243575#4243575)。 – jensgram 2010-11-22 09:43:38

2
$(this).attr('class').split(' ').pop() 
+0

+1这是我想到的。 – alex 2010-11-25 17:36:55

相关问题