2011-02-15 12 views
11

es:Come sostituire una classe speciale con un'altra in jQuery?

<li class="dataItem ready igto" status="ready">I will change status to waiting</li> 

e poi, voglio solo cambiare la classe pronti a attesa .il modo normale è quello di rimuovere il classe pronti e l'aggiunta di nuova classe!

e un'altra situazione è come sostituire la multi classe in una sola volta !? Per esempio:

<!-- replace done wainting error to ready --> 
<li class="dataItem done igto" status="ready">I will change status to ready</li> 
<li class="dataItem waiting igto" status="ready">I will change status to ready</li> 
<li class="dataItem error igto" status="ready">I will change status to ready</li> 

a:

<li class="dataItem ready igto" status="ready">I will change status to waiting</li> 

Grazie molto !!

risposta

21

Il modo migliore è quello di fare come dici tu, rimuovere la classe e poi aggiungerla di nuovo, in quanto non ci sono classi di "passaggio" in jQuery.

$('.dataItem').removeClass('ready').addClass('waiting'); 

È possibile sostituire più classi passando in più di una classe in .removeClass():

$('.dataItem').removeClass('done waiting error').addClass('ready'); 
24

È possibile utilizzare $.toggleClass() per raggiungere questo obiettivo.

$("p").click(function(){ 
    // Replace 'done' with 'waiting' or 'waiting' with 'done' 
    $(this).toggleClass("done waiting"); 
}); 

Esempio: http://jsfiddle.net/wH9x3/

+1

+1 primo e pulito. – JCOC611

+0

Non affidabile, perché si attiva ogni volta, anche quando non lo vogliamo. – sidney

+0

@sidney Il punto è mostrare come funziona '$ .fn.toggleClass'. Spetta a chi lo utilizza avvolgere condizionatamente per eseguire solo in determinate circostanze. – Sampson

Problemi correlati