jQuery - 从特定模式开始删除所有元素类

时间:2013-10-21 10:55:22

标签: jquery regex class tags removeall

我需要使用'layout - '

从元素开头删除所有类

我试试:

var regex = new RegExp('\b' + 'layout-' + '.*?\b', 'g');
$(el)[0].className = $(el)[0].className.replace(regex, '');

但它不起作用。 解决方案可以在jQuery中。 有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您在问题中发布的RegExp无效,因为\b未转义为\\b。因此,实际的RegExp变为/layout-.*?/g而不是/\blayout-.*?\b/g。执行以下更改将起作用。

var regex = new RegExp('\\b' + 'layout-' + '.+?\\b', 'g');

您也可以尝试以下方式。这将删除所有类似layout-X

的类
var regex = /(\s)*(layout-.*?)(?=\s)/g; 
$('#test')[0].className = $('#test')[0].className.replace(regex, '');

Demo Fiddle

输入: class=sample layout-10 layout-9 sample1 slayout

输出: class=sample sample1 slayout

RegExp说明:

\s - 任何空格字符

(layout-.*?) - 捕获所有值,例如layout-X,其中X可以是任意次数的任何字符

(?=\s) - 向前看下一个空白字符(意思是直到结尾)


正如musefan在评论var regex = /\blayout-.+?\b/g;中所指出的那样,也将完成这项工作。

答案 1 :(得分:1)

$("[class^='layout-']").removeAttr('class');

参考attribute-starts-with-selector

<强> removeAttr