2010-10-31 15 views
12

Me gustaría que cada vez que div se expanda, agregue la clase 'selecionado' una vez que la expansión haya finalizado. Cuando la contracción haya finalizado (la parte de deslizamiento hacia arriba), me gustaría eliminar esta clase.jquery - cómo agregar/eliminar clases en slideToggle?

¿Me pueden ayudar aquí, por favor?

$('#btCategoriaA').click(function() 
{ 
    $('#listaCategoriaA').slideToggle('slow', function() { 
    $('#btCategoriaA').addClass('selecionado'); 
    }); 
}); 

Gracias de antemano, MEM

Respuesta

31

Puede alternar la clase utilizando .toggleClass() basado en si el elemento .is():visible después de la animación, así:

$('#btCategoriaA').click(function() { 
    $('#listaCategoriaA').slideToggle('slow', function() { 
    $('#btCategoriaA').toggleClass('selecionado', $(this).is(':visible')); 
    }); 
}); 
+1

Realmente roca en js Don ¿tú? : P Muchas gracias. : D – MEM

+0

Una cosa más, por favor, estoy haciendo esto usando estados css como a: hover. La cuestión es que necesito deshabilitar el vuelo estacionario, una vez que el usuario hace clic, de lo contrario, el efecto será bastante extraño, porque una vez que haga clic, el estado debería cambiar, pero como está suspendido, no es así. : s ¿Hay alguna manera de desactivar el control deslizante a: aplicado una vez que el usuario hace clic o algo así? – MEM

+0

@MEM - Puede tener el ': hover' como' a.Off: hover' y eliminar esa clase 'Off' al agregar el' selecionado'. –

Cuestiones relacionadas