如何根据字符串从元素中选择和删除类?
E.g
如何从元素class="s2"
<p class="s2 s4 s5"></p>
我正在寻找基于数字选择类的方法 - 例如's'可以在任何符号上串起来。 请注意,订单可能不同。
任何建议都非常感谢。
答案 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(' ');
});
答案 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]);
}
}
修改强>
正如有人在评论中指出的那样,上面的代码只会从第一个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”代替,它运行良好。