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

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

 

我有一个元素(这段代码显示了一个span但它可能是div span或任何东西)。 这个元素有一个以test-开头的类( test-top-lefttest-top-right等)。我在以test-开头的类上触发了一个click事件,并将被点击的对象保存为var object = this; 。 到目前为止简单的东西

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

编辑:

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

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

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

描述

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

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

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

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

样品

HTML

 Hello World 

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("-")) ;}); 

更多信息

  • jQuery – 属性包含选择器
  • jQuery – .attr()
  • jQuery – .click()
  • jsFiddle示范

这应该适合你:

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

类名是您要查找的类的名称。

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

 test 

要么

 test 

用脚本

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

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