我需要删除具有特定字符串的类。
我确实尝试了以下方法,但它不起作用。
<body class="myClass someStringAndOtherString"></body>
$('body').removeClass('class', ':contains("someString")');
有任何想法吗?
我需要删除具有特定字符串的类。
我确实尝试了以下方法,但它不起作用。
<body class="myClass someStringAndOtherString"></body>
$('body').removeClass('class', ':contains("someString")');
有任何想法吗?
要删除类“someString”,请执行以下操作:
$('body').removeClass('someString');
如果找到“someString”类,则删除所有类:
$('body').hasClass('someString').removeAttr('class');
要删除包含字符串的类:
// test if someString is present
if( $('body').attr('class').indexOf('someString') != -1){
// get classes as array
var classes = $('body').attr('class').split(' ');
// loop over array
for(i=0;i< classes.length; i++){
// is this class a class that contains someString?
if(classes[i].indexOf('someString') != -1){
// remove said class
$('body').removeClass(classes[i]);
}
}
}
或者这里是一个函数:
function removeClassesThatContainString(selector, someString){
var $selector = $(selector),
classAttr = $selector.attr('class');
if(classAttr.indexOf(someString) != -1){
var classes = classAttr.split(' ');
for(i=0; i<classes.length; i++){
if(classes[i].indexOf(someString) != -1){
$selector.removeClass(classes[i]);
}
}
}
}
那么它将是:
removeClassesThatContainString('body', 'someString');
$('body').removeClass('someString');
如果该类将存在于多个地方:
$('.someString').removeClass('someString');
编辑 对新问题的回答:
$('[class*="someString"]').each(function ()
var classes = $(this).attr('class').split(' ');
for(var i = 0; i < classes.length; ++i) {
if(classes.indexOf('someString') >= 0) {
$(this).removeClass('classes[i]);
}
}
});
你可以试试这段代码。
$('body').removeClass(function(i,c){var classes=c.split(' ');for(var i=0;i<classes.length;i++){if(/someString/.test(classes[i]))return classes[i];}});
它将删除诸如 someStringAndOtherString、thissomeString 和 someString 之类的类。
在多个类的情况下,它只会删除匹配的一个,因此,在您的示例中,它将单独保留“myClass”类。