我需要從元素中刪除的所有類與「佈局 - 」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) –