-2

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

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

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

有任何想法吗?

4

3 回答 3

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');
于 2012-10-18T14:56:07.640 回答
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]);
    }
  }
});
于 2012-10-18T15:01:05.123 回答
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”类。

于 2012-10-18T15:30:08.280 回答