我收到了几个自动生成的 HTML 文档,长达数千行,我需要清理源代码。大多数情况下需要删除“table-col-##”等类名。这是一个两步问题:
- 选择具有 table-col-## 的任何及所有类,其中 ## 是 0-999 之间的整数
- 从元素中删除匹配的类,而不删除任何其他类
所以它归结为:如果可能的话,我需要一种方法在 $() 选择器中使用正则表达式,然后在 every() 中获取选定的类 - 或者将正则表达式应用于 $.removeClass()。谁能指出我正确的方向?
更新:是否有任何类型的 $.removeClass([selected]) 功能?这似乎是解决第二部分的最简单方法。
最佳答案
如果只有数字可以接受,但也可以有其他字符,我会从这样的东西开始(未经测试,但在评论的帮助下进行编辑):
$("[class^='table-col-']").removeClass( function() { /* Matches even table-col-row */
var toReturn = '',
classes = this.className.split(' ');
for(var i = 0; i < classes.length; i++ ) {
if( /table-col-\d{1,3}/.test( classes[i] ) ) { /* Filters */
toReturn += classes[i] +' ';
}
}
return toReturn ; /* Returns all classes to be removed */
});
关于jQuery - 正则表达式选择和removeClass()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618005/