2013-10-21 107 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

相關問題