jquery hasClass,可以给出类名的开头,以获得完整的类名
我正在尝试做类似这个问题的事情,但它有点不同,所以那里的解决方案对我不起作用。
我有一个元素(这段代码显示了一个span
但它可能是div
span
或任何东西)。 这个元素有一个以test-
开头的类( test-top-left
, test-top-right
等)。我在以test-
开头的类上触发了一个click事件,并将被点击的对象保存为var object = this;
。 到目前为止简单的东西
我现在要做的是获得该类的全名( test-top-left
)。 我知道它从test-
开始 – 但是全名是什么。 问题是还有其他类a-class
another-class
和test-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")