Javascript/jQuery:如何删除一系列编号的类?
可能重复: 我有一个脚本,它在正文中随机添加了六个类中的一个。类的编号介于1和6之间,如下所示: 主题1至主题6 我需要一个干净的方法来移除所有这些。现在我有这个:Javascript/jQuery:如何删除一系列编号的类?,javascript,jquery,Javascript,Jquery,可能重复: 我有一个脚本,它在正文中随机添加了六个类中的一个。类的编号介于1和6之间,如下所示: 主题1至主题6 我需要一个干净的方法来移除所有这些。现在我有这个: $('body').removeClass('theme-1'); $('body').removeClass('theme-2'); $('body').removeClass('theme-3'); $('body').removeClass('theme-4'); $('body').removeClass('theme-5
$('body').removeClass('theme-1');
$('body').removeClass('theme-2');
$('body').removeClass('theme-3');
$('body').removeClass('theme-4');
$('body').removeClass('theme-5');
$('body').removeClass('theme-6');
但它有点笨重,对吧?有没有一种方法可以让我说删除theme-1到theme-6之间的任何类?您可以在循环中清除它们,这至少是一点清理。您可以在循环中清除它们,这至少是一点清理。您可以使用循环索引生成类名
classes = ""
for(i=1; i < 7; i++)
classes += 'theme-' + i + " ";
$('body').removeClass(classes);
可以使用循环索引生成类名
classes = ""
for(i=1; i < 7; i++)
classes += 'theme-' + i + " ";
$('body').removeClass(classes);
您可以将所有内容合并到一行:
$('body').removeClass('theme-1 theme-2 theme-3 theme-4 theme-5 theme-6');
或者使用一个循环,但是如果类始终在1到6之间,则循环就个人而言似乎有些过分。您可以将其全部合并到一行:
$('body').removeClass('theme-1 theme-2 theme-3 theme-4 theme-5 theme-6');
或者使用循环,但如果类始终在1到6之间,则循环就个人而言似乎有些过分。如果您不知道可能有多少个循环,则应使用正则表达式:
document.body.className = document.body.className.replace(/(^| )theme-\d+( |$)/g, ' ');
如果希望留在jQuery API中,请使用以下方法:
$('body').attr('class', function (i, className) {
return className.replace(/(^| )theme-\d+( |$)/g, ' ');
});
如果你身上没有其他职业,你可以一下子将它们全部移除:
$('body').removeClass();
如果您不知道可能有多少个,则应使用正则表达式:
document.body.className = document.body.className.replace(/(^| )theme-\d+( |$)/g, ' ');
如果希望留在jQuery API中,请使用以下方法:
$('body').attr('class', function (i, className) {
return className.replace(/(^| )theme-\d+( |$)/g, ' ');
});
如果你身上没有其他职业,你可以一下子将它们全部移除:
$('body').removeClass();
回答。Pat的代码如下:
$('body')[0].className.replace(/\theme-.*?\b/g, '');
但普雷斯托尔的回答看起来也不错。使用此功能:
function removeClassByPrefix(el, prefix) {
var regx = new RegExp('\\b' + prefix + '.*?\\b', 'g');
el.className = el.className.replace(regx, '');
return el;
}
回答。Pat的代码如下:
$('body')[0].className.replace(/\theme-.*?\b/g, '');
但普雷斯托尔的回答看起来也不错。使用此功能:
function removeClassByPrefix(el, prefix) {
var regx = new RegExp('\\b' + prefix + '.*?\\b', 'g');
el.className = el.className.replace(regx, '');
return el;
}
为什么要调用.removeClass函数6次,当它可以接受多个类并在一次调用中全部删除?谢谢vega的好建议。谢谢vega,我删除了这个。为什么要调用.removeClass函数6次,当它可以接受多个类并在一次调用中全部删除?谢谢vega的好建议。谢谢vega,我删除了这个。那你为什么不把这个问题作为一个副本来结束呢?只是把它标记为一个副本。非常感谢你的提示!那你为什么不把这个问题作为一个重复的问题结束呢?只是把它标记为一个重复的问题。非常感谢你的提示!