Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-删除具有相似名称的所有类_Jquery_Jquery Selectors - Fatal编程技术网

jQuery-删除具有相似名称的所有类

jQuery-删除具有相似名称的所有类,jquery,jquery-selectors,Jquery,Jquery Selectors,有没有更好的办法 $('element').removeClass('class-1').removeClass('class-2').removeClass('class-3').removeClass('class-5') ... to .removeClass('class-105') :) 我想删除所有class-(n)类。获取元素的类,将其作为字符串处理,然后将其放回: $('element').attr( 'className', $('element').attr('cl

有没有更好的办法

$('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, '')
);

使用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);      
        });
    });
}); 
$(函数(){
var i=0;
而(++i…或者,如果您知道可能要删除的类名,则可以使用。任务中令人讨厌的部分是要查找的类的绝对数量

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

对于(var i=1;i,这里有一个用于此目的的小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-*');

但是,每个元素的选择器都是关闭的,我会这样写:
$('element').attr('className',function(I,c){return c.replace(/\bclass-\d+\b/g',);});​@Nick Craver:是的,如果您需要将其应用于七个元素,这将非常有用。:)属性必须是“class”,而不是“className”,例如
$('element').attr('class',$('element').attr('class')。replace(/\bclass-\d+\b/g'))
@t1gor:attr
方法在答案发布后发生了更改。我编辑了答案,以包含适用于更高版本的jQuery的代码。这将假设每个元素只有一个类具有
class-
,并且它们在文档中以完美的数字顺序出现。我认为这不是问题的重点estion.@patrick,是的,你是对的。有没有更好的方法使用相同的选择器?我只是好奇know@Nick领结者回答(在接受答案下的评论中)这可能是最好的方法,尽管它需要jQuery 1.4或更高版本。我将发布一个适用于jQuery 1.4之前版本的答案。是的,如果您只有一个元素,这似乎是可行的。如果有多个元素,您将希望将代码放在
中。each()
并分别对每个元素进行操作。有点复杂,但应该可以工作。:o)