如何使用jQuery我可以检查一个元素的类?
例如,在此代码中,我想获得cl_gry50
类。
<span class="rate rate_cl_gry cl_gry50">
<img src="img.png">
</span>
因此,有时候,我需要检查的课程可能是:
我需要正则表达式吗? 感谢。
答案 0 :(得分:2)
Sterling Archer的回答是一个好的开始,这是一个改进的版本:
$("span[class*='cl_gry']").filter(function() {
return this.className.match(/(^|\W)cl_gry/);
});
这将使用选择器以获得更好的性能,并使用正则表达式来匹配不需要的匹配项。
使用此HTML进行测试:
<span class="something cl_gry50"></span>
<span class="cl_gry50"></span>
<span class="fake_cl_gry"></span>
将匹配前2个跨度,但不匹配第3个跨度。
如果你想要字符串“cl_gry50”,你可以像这样修改检查器:
var found = [];
$("span[class*='cl_gry']").filter(function() {
var match = this.className.match(/((^|\W)cl_gry[^\W]+)/);
if (!match) return false;
found.push(match[0]);
return true;
});
console.log(found); //Will contain ["cl_gry50", "cl_gry50"]
您可以使用indexOf
过滤掉重复的内容,但这需要针对IE8进行polyfill。
答案 1 :(得分:0)
另一种给这只猫皮肤的方法
示例HTML
<span id='span1' class="rate rate_cl_gry cl_gry50">
</span>
<span id='span2' class="cl_gry50">
</span>
<span id='span3' class="rate rate_cl_gry">
</span>
<强> JS 强>
$.extend($.expr[":"], {
cl_gryN: function(e)
{
var cl_gryN = false;
$.each($(e).attr('class').split(" "), function(k, v) {
if (/cl\_gry[\d]+/.test(v))
{
cl_gryN = true;
}
});
return cl_gryN;
}
});
console.log($('#span1').is(':cl_gryN')); //true
console.log($('#span2').is(':cl_gryN')); //true
console.log($('#span3').is(':cl_gryN')); //false