Pregunta

Parece que me he encontrado con un poco de problemas esta mañana con removeClass. Primero hago clic en un div Para agregar clase 'containerhover', luego, cuando haga clic en el botón Cerrar, no eliminará la clase que acaba de agregar a la div.

No sé si esto tiene algo que ver con que se agregue solo al DOM y no se codifica en el HTML. Por favor, alguien puede ayudar.

Html

<div class="container"></div>

jQuery

$(function() {

    $('.container').click(function(e) {
        var mythis = $(this);
        mythis.addClass("containerhover");
        mythis.find('.backface').addClass("bfhover");
        mythis.find('.album').addClass("ahover");
    });

    $('.closealbum').click(function(e) {
        $('.container').removeClass('containerhover');
    });
});
¿Fue útil?

Solución

Usar .on(), para adjuntar el evento al contenedor y activarlo solamente Si el .closealbum se hace clic en el elemento. Además, agregue el event.stopPropagation() Método para evitar que el evento burbujee más:

$('.container').on('click', '.closealbum', function(e) {
    $('.container').removeClass('containerhover');
    e.stopPropagation();
});
  1. Su problema es causado por el hecho de que el .closealbum El elemento no existe al vincular el click evento.
  2. Su elemento está colocado dentro del otro elemento. Sin que e.stopPropagation(), el evento burbujea, y el primer evento también se activará, deshaciendo el RemoveClass del segundo evento.

Manifestación: http://jsfiddle.net/kncr8/1/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top