我正在尝试做类似这个问题的事情,但它有点不同,所以那里的解决方案对我不起作用.
<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-class和test-top-left.可以hasClass用来获取班级的全名吗?我不想使用find()或filter()只是因为其中可能还有其他元素class="test-"
编辑:
我现在的代码是,但它给了我所有的类.我需要的是以单一课程开头的课程test-.
var object = this;
$(object).attr('class');
Run Code Online (Sandbox Code Playgroud)
所以现在我循环遍历所有类并分别测试每个类,这看起来像很多不必要的代码.我希望jQuery有一个聪明的方法来获得立即点击的确切类.
您可以使用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)
如果你不想使用正则表达式,你可以这样做.
$("[class*='test']").click(function() {
var object = $(this);
alert("test-" + object.attr("class").split("test-")[1].split("-"))
;});
Run Code Online (Sandbox Code Playgroud)