我需要从元素中删除的所有类与“布局 - ”jQuery的 - 删除所有元素类开始在特定模式
我尝试启动:
var regex = new RegExp('\b' + 'layout-' + '.*?\b', 'g');
$(el)[0].className = $(el)[0].className.replace(regex, '');
,但它不工作。 解决方案可以在jQuery中。 有什么想法?
我需要从元素中删除的所有类与“布局 - ”jQuery的 - 删除所有元素类开始在特定模式
我尝试启动:
var regex = new RegExp('\b' + 'layout-' + '.*?\b', 'g');
$(el)[0].className = $(el)[0].className.replace(regex, '');
,但它不工作。 解决方案可以在jQuery中。 有什么想法?
您曾经参与过这个问题正则表达式是行不通的,因为\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, '');
所有类
输入:class=sample layout-10 layout-9 sample1 slayout
输出:class=sample sample1 slayout
RegExp的解释:
\s
- 任何空白字符
(layout-.*?)
- 捕获样布局-X的所有值,其中X可以是任何字符任意次数
(?=\s)
- 前瞻高达下一个空白字符(意思是直到字的末尾)
正如指出的musefan在评论var regex = /\blayout-.+?\b/g;
也将做的工作。
你想删除所有的类,或只是以“layout-”开头的类?例如,'class =“class1 layout-something”' - 应该保留'class1'吗? – musefan
可能重复[JQuery removeClass通配符](http://stackoverflow.com/questions/2644299/jquery-removeclass-wildcard) –