2012-07-08 10 views
6

Tengo un objeto divjQuery - eliminar una clase que está en una matriz

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

y algunos botones

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

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

El código debe hacer esta función:

<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> 

Gracias para cualquier sugerencia y espero que te guste la pregunta :)

+2

¿Por qué hay espacios entre sus corchetes y los identificadores de sus etiquetas? Probado en IE, Firefox y Chrome. No sé qué editor o IDE estás usando, pero está escupiendo html no válido. – Daedalus

+0

Puede que no haya formateado el código correctamente – thednp

+0

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

Respuesta

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

Me gusta esta respuesta también, no puedo decidir ahora: | – thednp

+1

Así que voy a escoger este como el mejor. Felicidades @undefinido, obtuviste un puntaje de nuevo – thednp

+0

código confirmado 100% válido yeeey – thednp

13

.removeClass([className]): classNameOne o más clases separadas por espacios que se eliminarán del atributo de clase de cada elemento coincidente.

Por lo tanto, una todas las clases que desea eliminar en una lista separada por espacios.

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

El código original implica que las matrices deben ser matrices de cadenas, pero incluso en el código original no lo son. Si son variables que representan cadenas, esto funcionará, pero sospecho que la pregunta original también debería tenerlas como matrices de cadenas. –

+0

tienen que ser ** algo **, estoy cómodo asumiendo que él simplemente no pensó en incluir corchetes porque realmente no hay muchas alternativas sensatas. Cualquier otra primitiva tiene un razonable .toString(). ¿Objetos? ¿de que? – Sinetheta

+0

Esto suena interesante, lo comprobará de inmediato :) – thednp

1

O puede sin matriz y unirse a la función(). solo es necesario asignar clases a la variable

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

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