删除具有特定字符串的类

时间:2012-10-18 14:54:36

标签: javascript jquery

我需要删除具有特定字符串的类 我确实尝试了以下但它不起作用。

<body class="myClass someStringAndOtherString"></body>

$('body').removeClass('class', ':contains("someString")');

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

要删除类'someString',请执行以下操作:

$('body').removeClass('someString');

如果找到'someString'类,则删除所有类:

$('body').hasClass('someString').removeAttr('class');

删除包含字符串的类:

LIVE DEMO

// 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]);
          }
     }
}

或者它在这里是一个功能:

LIVE DEMO

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”类。