删除包含特定字符串的css类

时间:2011-08-01 11:35:45

标签: javascript jquery

如何根据字符串从元素中选择和删除类?

E.g

如何从元素class="s2"

中删除<p class="s2 s4 s5"></p>

我正在寻找基于数字选择类的方法 - 例如's'可以在任何符号上串起来。 请注意,订单可能不同。

任何建议都非常感谢。

7 个答案:

答案 0 :(得分:6)

您要找的是.removeClass

$('p.s4.s5').removeClass('s2');

编辑:

$('p').removeClass(function(i, class) {
    var classes = class.split(' ');  //get an array of all the classes
    var remove = [];                 //classes to remove

    $.each(classes, function() {
        if(this.match(/2$/))   //if the class name ends in 2
            remove.push(this); //add it to the list of classes to remove
    });

    return remove.join(' ');
});

demo

答案 1 :(得分:5)

试试这个:

//Get an array of css classes
var aryClasses = $('p').attr('class').split(' ');

//Loop over array and check if 2 exists anywhere in the class name
for(var i = 0; i < aryClasses.length; i++)
{
    //Check if 2 exists in the class name
    if(aryClasses[i].indexOf('2') != -1)
    {
        //2 Exists, remove the class
        $('.s2').removeClass(aryClasses[i]);
    }
}

这是a working JS Fiddle

修改

正如有人在评论中指出的那样,上面的代码只会从第一个p标记中删除CSS类(根据您的示例)。下面的代码将删除所有p元素中以2结尾的所有CSS类。

$('p').each(function() {
    var aryClasses = $(this).attr('class').split(' ');

    for (var i = 0; i < aryClasses.length; i++) {
        if (aryClasses[i].indexOf('2') != -1) {
            $(this).removeClass(aryClasses[i]);
        }
    }
});

答案 2 :(得分:4)

您可以将函数传递给removeClass()并让它返回要删除的类。

为此,您可以使用split()$.map()join()来构建一个新字符串,其中只包含包含您的号码的类名:

var yourNumber = 2;
$("p").removeClass(function(index, classes) {
    return $.map(classes.split(" "), function(value) {
        return (value.indexOf(yourNumber.toString()) >= 0 ? value : null);
    }).get().join(" ");
});

答案 3 :(得分:1)

$("p").removeClass('s2');

适合你(在这种情况下)

答案 4 :(得分:1)

我不认为你可以直接这样做。

var class_array = $('#your_html').attr('class').split()

这会将所有类作为数组返回。

一种方法是检查class_array的所有元素,然后在满足条件的情况下在'your html'上调用.removeClass()。

答案 5 :(得分:0)

您对此解决方案有何看法?

var ClassSelector = '2';

$('p').removeClass('*' + ClassSelector + '*');

答案 6 :(得分:0)

@Eric,用于removeClass回调函数解决方案。工作得很好,只要你不使用“class”作为第二个参数,至少在将它作为保留字捕获的情况下。我只是用“c”代替,它运行良好。