我正在尝试做类似于this question的事情,但它有点不同,所以那里的解决方案对我不起作用。
<span class="a-class another-class test-top-left"></span>
我有一个元素(此代码显示span
,但可能是div
span
或其他任何内容。此元素的类以test-
开头(test-top-left
,test-top-right
等。)我在以test-
开头的类上触发了点击事件,并将点击的对象保存为{ {1}}。到目前为止简单的东西
我现在要做的是获取该类的全名(var object = this;
)。我知道它以test-top-left
开头,但全名是什么。 问题是还有其他类test-
a-class
和another-class
。可以使用test-top-left
来获取课程的全名吗?我不想仅使用hasClass
或find()
,因为其中可能还有其他元素filter()
修改
我现在的代码是,但它给了我所有的类。我需要的是以class="test-"
开头的单个班级。
test-
所以现在我循环遍历所有类并分别测试每个类,这看起来像很多不必要的代码。我希望jQuery有一个聪明的方法来获得立即点击的确切类。
答案 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])
;});
如果你不想使用正则表达式,你可以这样做。
$("[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")