2010-05-06 112 views
2

您好我有一個會沿此線的東西的聲明刪除所有匹配類中的jQuery

<li class="module ui-helper-fix"> 

而且我可以動態地加入對類改變模塊的顏色的li元素(這被動態地通過DB的呼叫提供的)的最終結果是

<li class="module ui-helper-fix module-green"> 

<li class="module ui-helper-fix module-default"> 

嗯,我很好地通過添加一個新的模塊 - WHATEVER類來改變顏色,但我想要做的是刪除任何匹配模塊-XXXX的類,因此它以一個乾淨的石板開始,然後添加在類模塊 - 深紅色。

那麼如何刪除所有匹配module-xxx的類呢?請記住,我不想刪除基本模塊類。

編輯:

基本上,我需要的任何模塊 - 類做了一網打盡的方法:

執行前

<li class="module ui-helper-fix module-default"> 

清潔後掃

<li class="module ui-helper-fix"> 

然後添加分類和最終結果

<li class="module ui-helper-fix module-green"> 

謝謝。

-Seth

+0

請注意我做了什麼來使您的示例可見 – 2010-05-06 18:34:11

回答

6

修訂

DEMO:http://jsbin.com/onoxa/7

DEMO 2:http://jsbin.com/onoxa/8

$(function() { 
    $("li").each(function(e) {  
    var classes = this.className.replace(/module-\w+/gi, ''); 
     $(this).attr('class', classes); 
    }); 
});​ 

$("li").each(function(e) { 
    var classes = this.className.replace(/module-\w+/gi, ''); 
    $(this).attr('class', classes + ' module-green'); 

}); 

輸出中的:

<li class="module ui-helper-fix"> 
+0

這很接近,但我想要做的事情基本上每次我嘗試添加一個新的顏色類(模塊綠色,模塊默認等)我做了一個對任何匹配的「模塊」類清除元素類。 – 2010-05-06 18:52:02

+0

所以你basicaly想要刪除所有的模塊-XXX,只留下模塊!對!? – 2010-05-06 18:55:14

+0

是的,如果你看到我上面的編輯,現在可能會更清楚。 – 2010-05-06 18:57:16

1

使用此:

var newClass = "module-green"; 
$("li").attr("class","module ui-helper-fix").addClass(newClass); 
+0

這在技術上是可行的,但是在某些情況下,它不僅僅是模塊和ui-helper-fix包含在班級列表中。但是儘管如此+1 – 2010-05-06 19:35:33

0
function changeModule(selector, module_name) { 
    var that = selector; 
    var classes = $(selector).attr('class').split(' '); 
    $.each(classes, function(index, thisClass){ 
     if (thisClass.indexOf('module-') !== -1) { 
      $(that).removeClass(classes[index]) 
     } 
    }); 
    $(that).addClass(module_name); 
} 

jQuery(document).ready(function(){ 
    $('li').click(function(){ 
     changeModule(this, 'module-green'); 
    }) 
});