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

时间:2011-03-21 21:31:22

标签: jquery

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

在jQuery中使用$(this).attr('class')

很简单

但问题是,当我们想从多个类中选择一个类时,例如:

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

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

任何想法?

3 个答案:

答案 0 :(得分:2)

获得第一堂课:

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

但是,类的想法是它们无序,因此没有jQuery方法直接执行此操作。您可能希望包含data-属性:

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

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

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

答案 1 :(得分:1)

不确定它们是否是在jquery中执行此操作的方法,但我只是获取类,然后只使用拆分函数并获取拆分数组中的第一项

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

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

希望这会有所帮助

编辑 - &GT;&GT;看来box9打败了我。干得好!)

答案 2 :(得分:0)

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

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

将类列表作为字符串

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

返回类似&#34; class-1 class-2 my-special-class-1 class-4&#34;

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

在这种情况下,我想找到任何以&#34; my-special-class开头的类 - &#34;并以数字结尾

var matchResult = classList.match(pattern);

检查是否有匹配项。在我的情况下,我知道最后只会有一个带有数字(我不知道)的课程。我想用它来进行jquery调用,所以我附上了&#34;。&#34;到字符串

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