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

sam*_*old 4 javascript jquery

我正在尝试做类似这个问题的事情,但它有点不同,所以那里的解决方案对我不起作用.

<span class="a-class another-class test-top-left"></span>
Run Code Online (Sandbox Code Playgroud)

我有一个元素(这段代码显示了一个span但它可能是div span或任何东西).这个元素有一个类年初test-(test-top-left,test-top-right等等),我已经触发起始类点击事件test-,并保存在点击对象var object = this;.到目前为止简单的东西

我现在要做的是获取该类的全名(test-top-left).我知道它的开头是test-什么,但全名是什么.问题是还有其他类a-class another-classtest-top-left.可以hasClass用来获取班级的全名吗?我不想使用find()filter()只是因为其中可能还有其他元素class="test-"

编辑:

我现在的代码是,但它给了我所有的类.我需要的是以单一课程开头的课程test-.

var object = this;
$(object).attr('class'); 
Run Code Online (Sandbox Code Playgroud)

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

dkn*_*ack 9

描述

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

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

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

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

样品

HTML

<span class="anyclass test-hello">Hello World</span>?
Run Code Online (Sandbox Code Playgroud)

jQuery的

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

查看更新的jsFiddle

更新

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

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

更多信息