我需要删除具有特定字符串的类 我确实尝试了以下但它不起作用。
<body class="myClass someStringAndOtherString"></body>
$('body').removeClass('class', ':contains("someString")');
有什么想法吗?
答案 0 :(得分:2)
要删除类'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');
答案 1 :(得分:0)
$('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]);
}
}
});
答案 2 :(得分:0)
您可以尝试使用此代码。
$('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”类。