2011-03-15 53 views
3

我之前問過類似的問題,但是我的措辭提供了正確提交的答案,但不是我實際試圖回答的問題:)爲了不混淆SO上市,我已經分開發布這個問題。使用jQuery從一個匹配特定格式的元素中刪除所有的類

鑑於下面的HTML,從#item_3開始以「child_」開頭的所有的最方便的方法是什麼?

該解決方案需要能夠保留「stays_put」類,不會影響任何其他列表元素。

<ul id="list"> 
    <li id="item_1" class="child_1 child_12">Item 1</li> 
    <li id="item_2" class="child_4 child_6">Item 2</li> 
    <li id="item_3" class="child_3 child_1 stays_put">Item 3</li> 
</ul> 

我最初問的問題可以在這裏找到。 Using Reg Ex in jQuery selection

回答

3

好吧,我想你可以亂用class直接屬性,像這樣:

$('#item_3').attr('class', function() { 
    return $.trim($(this).attr('class').replace(/child_\S+/g, '')); 
}); 

基本上你搜索與child_前綴班,什麼也沒有更換,然後設置class屬性與所得串。正則表達式/child_\S+/g匹配child_後跟非空白字符,因爲類名稱是空格分隔的。

jsFiddle preview

+0

不錯!這是你到達的一些漂亮的代碼。 – 2011-03-15 20:26:17

0

您可以用splitjQuery.each組合做到這一點:

var classes = $('#item_3').attr('class').split(' '); 
$.each(classes, function(idx, val) { 
    if(val.indexOf('child_') === 0) { 
     $('#item_3').removeClass(val); 
    } 
}); 
相關問題