从同一属性中的类中选择一个类

问题描述:

我有一些元素,点击后会触发一些动作并选择“class”属性。从同一属性中的类中选择一个类

jQuery中它的简单使用$(this).attr('class')

但问题是,当我们要选择多个类,比如,当我们有例如一类:

<a href="#" class="class1 class2"></a> 

,我们只想得到第一类(class1),因为当我们使用这个:$(this).attr('class')时,我们将得到“class1 class2”。

有什么想法吗?

+1

大概你不想(或不能)使用.hasClass()来检测它是否有特定的类? – ajcw 2011-03-21 21:37:49

+0

@约翰:这个想法是要调用一个div的内容,这个div的id与点击按钮的第一个类相同,第二个类用于样式。 – MohamedKadri 2011-03-21 21:41:30

+1

我们可以看到该想法的示例代码吗? – BoltClock 2011-03-21 22:19:24

要获得第一类:

$(this).attr('class').split(' ')[0]; 

然而,类的想法是,他们是无序,因此没有jQuery的方法直接做到这一点。您可能希望包括data-属性来代替:

<a href="#" class="class2" data-target="someId"></a> 

使用jQuery 1.4.3+您可以直接访问data-target属性有:

$(this).data('target'); 

不知道,如果他们是一个方式来做到这一点jQuery的,但我只想得到的类,然后只用一个分裂的功能,并采取分流阵列中的第一项

$(this).attr('class')// which happens to have "class1 class2" in it 

var mySplitResult = myString.split(" "); 
mySplitResult[0] // should be "class1" 

希望这有助于

编辑 - >>似乎box9击败了我。不错的工作:)

今天有这个问题。想出了一个稍微不同的解决方案来处理不知道类的顺序。

仍然假设类名(或其中的一些)是已知的我使用了正则表达式。

获取类列表作为字符串

var classList = $(this).attr('class'); 

回报类似“1类2类我,特殊类1级-4”

var pattern = /\bmy-special-class-[0-9]+\b/; 

在这种情况下,我想找到任何以“my-special-class-”开头并以数字结尾的课程

var matchResult = classList.match(pattern); 

检查是否有上午ATCH(ES)。在我的情况下,我知道最后只会有一个类有一个数字(我不知道)。我想用这个jquery调用,所以我附加了“。”到字符串

if (matchResult) { 
    var foundClass = "." + matchResult[0]; // assuming one class (loop for more) 
    var elementsWithClass = $(foundClass); 
} 
+0

提供一些代码预览或演示(jsFiddle)来描述您的答案。 – 2015-02-06 08:20:01