jQuery no eliminar la clase después de ser agregado a través de jQuery
-
28-10-2019 - |
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');
});
});
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();
});
- Su problema es causado por el hecho de que el
.closealbum
El elemento no existe al vincular elclick
evento. - 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