开发者

jQuery - Remove all classes with similar names

开发者 https://www.devze.com 2023-01-15 23:59 出处:网络
Is there any better way to do this? $(\'element\').removeClass(\'class-1\').removeClass(\'class-2\').removeClass(\'class-3\').re开发者_开发问答moveClass(\'class-5\') ...

Is there any better way to do this?

$('element').removeClass('class-1').removeClass('class-2').removeClass('class-3').re开发者_开发问答moveClass('class-5') ...
to .removeClass('class-105')
:)

I want to remove all class-(n) classes.


Here's a small jQuery plugin I'm using for this purpose:

(function($) {
    $.fn.removeClassWild = function(mask) {
        return this.removeClass(function(index, cls) {
            var re = mask.replace(/\*/g, '\\S+');
            return (cls.match(new RegExp('\\b' + re + '', 'g')) || []).join(' ');
        });
    };
})(jQuery);

You use it like this:

$(...).removeClassWild('class-*');


Get the classes of the element, process it as a string, and put it back:

$('element').attr(
  'className',
  $('element').attr('className').replace(/\bclass-\d+\b/g, '')
);

Edit:

The attr method has since changed, and it no longer reads properties, so you have to use the attribute name class instead of the property name className:

$('element').attr(
  'class',
  $('element').attr('class').replace(/\bclass-\d+\b/g, '')
);


Doing it in a better way using css selector, [type*=value]

$(function() {
    var i = 0;
    while( ++i <= 105) {
        $('b').addClass('class-'+ i);
    }
  var clas = '';
  var arey =[]
    $('input[type=button]').click(function() {  
        clas = $('b').attr('class');
        arey = clas.match(/class-\d{1,3}/g);
        $.each(arey, function(i, e) {
            $('b').removeClass(e);      
        });
    });
}); 

Edit :

Demo : http://jsbin.com/opebu4/2


...or you can use a starts-with selector if you know the possible class names you'd like to remove. The nasty part of the task is the sheer number of classes to look for...

$(document).ready(function () {
     var classesOfInterest = '';
     for(var i = 1; i<=105; i++)
        classesOfInterest += ' ' + 'class-' + i;
     alert(classesOfInterest);
     $("[class^='class-']").removeClass(classesOfInterest);
  });
0

精彩评论

暂无评论...
验证码 换一张
取 消