我有一些元素,点击后会触发一些动作并选择“class”属性。
在jQuery中使用$(this).attr('class')
但问题是,当我们想从多个类中选择一个类时,例如:
<a href="#" class="class1 class2"></a>
我们只想获得第一个类(class1),因为当我们使用它时:$(this).attr('class')
我们将得到“class1 class2”。
任何想法?
答案 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);
}