2013-10-21 72 views
0

我需要从元素中删除的所有类与“布局 - ”jQuery的 - 删除所有元素类开始在特定模式

我尝试启动:

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

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

+0

你想删除所有的类,或只是以“layout-”开头的类?例如,'class =“class1 layout-something”' - 应该保留'class1'吗? – musefan

+0

可能重复[JQuery removeClass通配符](http://stackoverflow.com/questions/2644299/jquery-removeclass-wildcard) –

回答

5

您曾经参与过这个问题正则表达式是行不通的,因为\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-.*?) - 捕获样布局-X的所有值,其中X可以是任何字符任意次数

(?=\s) - 前瞻高达下一个空白字符(意思是直到字的末尾)


正如指出的musefan在评论var regex = /\blayout-.+?\b/g;也将做的工作。

+1

正要张贴解答这表明它似乎是一个正则表达式定义的问题。此正则表达式也似乎工作:'/ \ blayout - + \ B/g' – musefan

+0

权,是真的吗?。刚刚发布后重新检查。此外,一个我张贴需要改进'(\ s)*'开始。目前一个在我的答案,如果它是一流的习惯代替'布局X'。现在纠正它。 – Harry

+1

@musefan:嗯知道了,有问题的正则表达式是行不通的,因为'\ B'不转义为'\\ B':因为工作所形成的实际正则表达式正成为d'/layout-.+ ?/ g'。 – Harry

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

参考attribute-starts-with-selector

removeAttr

+0

我不确定如果OP想要删除整个类属性,我要求澄清,但似乎尝试似乎表明他们只是想删除'layout-'类 – musefan

+0

我需要从元素开始删除所有类的开始'布局 - '操作说,我已经回答了这个感谢焦点@musefan –

+0

示例代码还建议OP已经有了这个元素,所以甚至可能根本不需要选择器......这不是一个很好解释的问题,要公平。 – musefan

相关问题