正在删除所有以字符串开头的类
Removing all classes starting with string
我有以下HTML:
<div class="cols someclass"></div> <!--like this cols1, cols2, etc..-->
<div class="columns someclass"></div> <!--like this columns1, columns2, etc...-->
<div class="col-1 someclass"></div> <!--like this col-2, col-3,etc...-->
<div class="column-1 someclass"></div> <!--like this column-2, column-3, etc...-->
如何删除以"col"
开头的所有类?
我相信没有jQuery的魔力,所以这里是我的解决方案:
$('[class*=col]').each(function() {
this.className = $.grep(this.className.split(' '), function(el) {
return !/^col/.test(el);
}).join(' ');
});
Fiddle
基本上,它选择类中有col
的元素并对其进行迭代,对其类进行迭代并删除以col
开头的元素。
或者不带正则表达式:
$('[class*=col]').each(function() {
this.className = $.grep(this.className.split(' '), function(cl) {
return cl.lastIndexOf('col', 0);
}).join(' ');
});
Fiddle
使用此答案的修改版本。如果类以错误值col
开头,则lastIndexOf
将返回0
,因此grep
将删除该值。如果类不以col
开头,则返回真实值-1
。您也可以使用return cl.lastIndexOf('col', 0) !== 0;
来提高可读性。
或者仅使用正则表达式:
$('[class*=col]').each(function() {
this.className = this.className.replace(/(^| )col[^ ]*/g, '');
});
Fiddle
匹配字符串开头或空格后的col
,将其与所有前导字符一起删除,直到字符串的另一个空格或末尾。
Referec
jQuery.grep
-查找满足筛选函数的数组元素。原始数组不受影响element.className
-获取并设置指定元素的class
属性的值
当然,这个选择器不是最优的——如果一个元素有foocol
,$('[class*=col]')
会选择它,但$.grep
/regex不会删除它,因为它不是以col
开头的。我想不出任何更好的选择器了(没有属性选择器可以选择以空格分隔列表AFAIK中的部分字符串开头的值),不过这应该足够了。
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 如何删除字符串开头和结尾的换行符
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 我可以选择所有属性名称(而不是值)以某个字符串开头的元素吗
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在jquery中选择id以字符串开头的元素
- 获取DOM中属性名称以某个字符串开头的所有HTML元素
- 如何匹配字符串开头的数字
- 为所有以特定字符串开头的变量赋值
- 正则表达式,用于匹配字符串开头的协议相对 URL
- 在 JavaScript 中按字符串开头或单个字符进行匹配
- REGEX 检查字符串开头或结尾的字符
- 如何在 javascript 中检查字符串开头是否有空格
- 正则表达式匹配:字符串开头不包含字符
- 如何从字符串开头获得与正则表达式的匹配项
- 如何检查 JavaScript 对象是否具有以特定字符串开头的属性名称
- Web 视图中字符串开头和结尾的像素偏移量 (x,y)
- JS获取以字符串开头键的对象值