jQuery не удаляет класс после добавления через jQuery - PullRequest
0 голосов
/ 14 января 2012

Кажется, сегодня утром у меня возникли проблемы с removeClass. Сначала я нажимаю div, чтобы добавить класс 'containerhover', затем, когда я нажимаю кнопку закрытия, он не удалит класс, который он только что добавил в div.

Я не знаю, связано ли это с тем, что его добавляют только в dom, а не кодируют в HTML. Пожалуйста, может кто-нибудь помочь.

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');
    });
});

1 Ответ

7 голосов
/ 14 января 2012

Используйте .on(), чтобы прикрепить событие к контейнеру и активировать его только , если щелкнуть элемент .closealbum.Кроме того, добавьте метод event.stopPropagation(), чтобы предотвратить дальнейшее всплытие события:

$('.container').on('click', '.closealbum', function(e) {
    $('.container').removeClass('containerhover');
    e.stopPropagation();
});
  1. Ваша проблема вызвана тем, что элемент .closealbum не существует при связывании clickevent.
  2. Ваш элемент расположен внутри другого элемента.Без e.stopPropagation() событие всплывает, и первое событие также будет запускаться, отменяя второе событие removeClass.

Демо: http://jsfiddle.net/knCR8/1/

...