2011-03-31 19 views
23

Necesito poder alternar clases cuando hago clic en un elemento. Funciona bien para ese elemento:Alternar varias clases de elementos con jQuery

$(".main").click(function() { 
    $(this).toggleClass("classA").toggleClass("classB"); 
}); 

Pero me gustaría añadir a ella para alternar las clases para todos los elementos de la página que tienen una clase en particular, por ejemplo "togToo". Para esos elementos, necesito alternar entre "classC" y "classD".

Estoy casi seguro de que hay una manera de combinar eso en un clic ...

^^^ ^^^ ACTUALIZADO POR ENCIMA

Respuesta

10

respuesta Actualizado

$(".main").click(function() { 
    $(this).toggleClass("classA").toggleClass("classB"); 
    $('.togToo').toggleClass("classC").toggleClass("classD"); 
}) 
+0

im no estoy seguro de lo que quieres decir – Neal

+0

Necesito cambiar clases para otros elementos (secundarios) cuando hago clic solo en ese elemento principal. – santa

+0

hmmm un segundo – Neal

0

Simplemente puede hacer algo como


$("classC").toggle("ClassD"); 

dentro del manejador de "clic"

2

Esto debería hacer el truco:

$(".main").click(function() { 
    $(this).toggleClass("classA").toggleClass("classB"); 
    $(".togToo").toggleClass("classC").toggleClass("classD"); 
)); 

Además, al alternar las clases, sugeriría tener una clase base, y una clase de palanca, en lugar de cambiar entre dos clases.

2

¿Por qué no utilizará el selector de clase jQuery?

$('.togToo').toggleClass("classC").toggleClass("classD"); 
+0

funciona bien para mí – Henry8

73

Si los elementos para ser activado comienzan con una de las dos clases, a continuación, puede alternar la siguiente manera:

$('#element_to_click').click(function(){ 
    $('.togToo').toggleClass('classC classD'); 
}); 
+23

Esta debería ser la respuesta aceptada. –

0

lo hago de esta manera, tener múltiples imágenes con la clase $ ('. img-polaroid') y clase $ ('. drag'), cuando se hace clic en una de las imágenes, se elimina el $ ('. drag') de este elemento después de haberlo agregado a todos ellos

$('.img-polaroid').click(function(){ 
    if ($(this).hasClass('drag')) 
     { 
     $('.img-polaroid').addClass('drag'); 
     $(this).removeClass('drag'); 
    } 
}); 
0

Si está buscando una manera de togg Le mutliple a través de clases, una tras la otra y no todos juntos escribí rápidamente un pequeño script que puede utilizar:

https://github.com/ThibaultJanBeyer/.toggleClasses-for-jQuery

se extiende un nuevo método .toggleClasses jQuery() que hace exactamente lo que quiere. échale un vistazo y no dudes en mejorarlo si tienes mejoras :)

Cuestiones relacionadas