2012-07-08 12 views
6

Ho un oggetto divjQuery - rimuovere una classe che è in una matrice

<div class="class1 classA classB class2"> content </div> 

e alcuni pulsanti

<button id="numbers">clickme N </button> 

<button id="alphas">clickme A </button> 

Il codice dovrebbe fare questa funzione:

<script> 
    var classesN = [class1, class2, class3]; 
    var classesAlpha = [classA, classB, classC]; 

    $('#alphas').click(function() { 
     $('div').removeClass(all classes that are in the classesAlpha array); 
    }); 
    $('#numbers').click(function() { 
     $('div').removeClass(all classes that are in the classesN array); 
    }) 
</script> 

Grazie per qualsiasi suggerimento e spero che vi piaccia la domanda :)

+2

Perché ci sono spazi tra parentesi e identificatori di tag? Testato su IE, Firefox e Chrome. Non so quale editor o IDE stai usando, ma sta diffondendo un html non valido. – Daedalus

+0

È possibile che il codice non sia stato formattato correttamente – thednp

+0

http://stackoverflow.com/questions/11279835/delete-all-classes-after-a-certain-class ?? ':)' simile, hmm –

risposta

8
var classesN = ["class1", "class2", "class3"]; 
var classesAlpha = ["classA", "classB", "classC"]; 

$('#alphas').click(function() { 
    var $div = $('div'); 
    $.each(classesAlpha, function(i, v){ 
     $div.removeClass(v); 
    }); 
}); 

DEMO

+0

Anche a me piace questa risposta, non posso decidere ora: | – thednp

+1

Quindi ho intenzione di scegliere questo come il migliore. Complimenti @undefined, hai ottenuto nuovamente il punteggio – thednp

+0

codice confermato valido al 100% yeeey – thednp

13

.removeClass([className]): classNameOne o più classi separate dallo spazio da rimuovere dall'attributo di classe di ciascun elemento corrispondente.

Quindi, unire tutte le classi che si desidera rimuovere in una lista separata dallo spazio.

var classesN = [class1, class2, class3]; 
var classesAlpha = [classA, classB, classC]; 

$('#alphas').click(function() { 
    $('div').removeClass(classesAlpha.join(' ')); 
}); 
$('#numbers').click(function() { 
    $('div').removeClass(classesN.join(' ')); 
}); 
+1

Il codice originale implica che gli array dovrebbero essere matrici di stringhe, ma anche nel codice originale non lo sono. Se sono variabili che rappresentano stringhe, funzionerà, ma sospetto che la domanda originale debba averle anche come array di stringhe. –

+0

devono essere ** qualcosa **, mi sento a mio agio supponendo che lui non abbia pensato di includere parentesi perché non ci sono davvero molte alternative ragionevoli. Qualsiasi altra primitiva ha un motivo .toString(). Oggetti? di cosa? – Sinetheta

+0

Sembra interessante, lo controlleremo subito :) – thednp

1

Oppure può senza matrice e unirsi funzione(). solo bisogno di assegnare classi alla variabile

var classesN = "class1 class2 class3"; 
var classesAlpha = "classA classB classC"; 

$('#alphas').click(function() { 
    $('div').removeClass(classesAlpha); 
}); 
$('#numbers').click(function() { 
    $('div').removeClass(classesN); 
});