jquery hasClass,可以给出类名的开头,以获取完整的类名

时间:2012-05-22 19:30:13

标签: javascript jquery

我正在尝试做类似于this question的事情,但它有点不同,所以那里的解决方案对我不起作用。

<span class="a-class another-class test-top-left"></span>

我有一个元素(此代码显示span,但可能是div span或其他任何内容。此元素的类以test-开头(test-top-lefttest-top-right等。)我在以test-开头的类上触发了点击事件,并将点击的对象保存为{ {1}}。到目前为止简单的东西

我现在要做的是获取该类的全名(var object = this;)。我知道它以test-top-left开头,但全名是什么。 问题是还有其他类test- a-classanother-class可以使用test-top-left来获取课程的全名吗?我不想仅使用hasClassfind(),因为其中可能还有其他元素filter()

修改

我现在的代码是,但它给了我所有的类。我需要的是以class="test-"开头的单个班级。

test-

所以现在我循环遍历所有类并分别测试每个类,这看起来像很多不必要的代码。我希望jQuery有一个聪明的方法来获得立即点击的确切类。

3 个答案:

答案 0 :(得分:9)

描述

您可以使用jQuerys Attribute Contains Selector.attr().click()方法。

  

属性包含选择器 - 选择具有指定属性的元素,其值包含给定的子字符串。

     

.attr() - 获取匹配元素集中第一个元素的属性值。

     

.click() - 将事件处理程序绑定到“click”JavaScript事件,或在元素上触发该事件。

示例

<强> HTML

<span class="anyclass test-hello">Hello World</span>​

<强>的jQuery

$("[class*='test']").click(function() {
    var object = $(this);
    alert(object.attr("class").match(/(test-.*?)(?:\s+|$)/)[1])
;});

查看更新后的jsFiddle

更新

如果你不想使用正则表达式,你可以这样做。

$("[class*='test']").click(function() {
    var object = $(this);
    alert("test-" + object.attr("class").split("test-")[1].split("-"))
;});

更多信息

答案 1 :(得分:3)

这应该适合你:

var object = this;
var className = object.className.match(/(test-.*?)(?:\s+|$)/)[1];

班级名称是您要查找的班级的名称。

答案 2 :(得分:0)

如果您不想使用split或regex,可以尝试将该类放在单独的属性中

<span class="someclass test-something" _rel="test-something">test<span> 

<span class="someclass" _rel="test-something">test<span>

使用脚本

$("[_rel*='test-']").click(....

要检索属性,请使用$(this).attr("_rel")