jQuery – 删除所有具有相似名称的类
有没有更好的方法来做到这一点?
$('element').removeClass('class-1').removeClass('class-2').removeClass('class-3').removeClass('class-5') ... to .removeClass('class-105') :)
我想删除所有class-(n)类。
获取元素的类,将其作为字符串处理,然后将其放回:
$('element').attr( 'className', $('element').attr('className').replace(/\bclass-\d+\b/g, '') );
编辑:
attr
方法已经改变,并且不再读取属性,因此您必须使用属性名称class
而不是属性名称className
:
$('element').attr( 'class', $('element').attr('class').replace(/\bclass-\d+\b/g, '') );
这是我用于此目的的一个小jQuery插件:
(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);
你这样使用它:
$(...).removeClassWild('class-*');
使用css选择器以更好的方式执行此操作, [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); }); }); });
编辑 :
演示: http : //jsbin.com/opebu4/2
…或者,如果您知道要删除的可能类名,则可以使用启动选择器 。 这项任务的令人讨厌的部分是要寻找的大量课程……
$(document).ready(function () { var classesOfInterest = ''; for(var i = 1; i<=105; i++) classesOfInterest += ' ' + 'class-' + i; alert(classesOfInterest); $("[class^='class-']").removeClass(classesOfInterest); });