您可以使用这样的正则表达式提取整个类名:
$('[class$="blue"]').each(function() {
var clsName = this.className.match(/\w*blue\w*/)[0];
});
您应该意识到$('[class$="blue"]') 对名为class 的整个属性进行操作。我不对单个类名进行操作。所以,它会匹配:
class="happy text_blue"
但是,它不会匹配:
class="text_blue happy"
因为类属性不以"blue" 结尾。如果您希望它获取任何包含 "blue" 的类名,而不管它在类名属性中的位置,您都必须使用:
$('[class*="blue"]').each(function() {
var clsName = this.className.match(/\w*blue\w*/)[0];
});
如果你还想过滤掉不以蓝色结尾的类名,你可以用 JS 来做这样的事情:
$('[class*="blue"]').each(function() {
var match = this.className.match(/\w*blue(\b|$)/);
if (match) {
var clsName = match[0];
}
});
如果你想从对象中删除这些类名,你可以这样做:
$('[class*="blue"]').each(function() {
var match = this.className.match(/\w*blue(\b|$)/);
if (match) {
$(this).removeClass(match[0]);
}
});
也可以这样做,看起来更干净一些,但它并不能完美地清除它正在删除的类名周围的额外空白:
$('[class*="blue"]').each(function() {
this.className = this.className.replace(/\w*blue(\b|$)/, "").replace(/\s+/g, ' ');
});