jQuery在通过jQuery添加后不删除类

时间:2012-01-14 14:53:35

标签: jquery dom removeclass

今天早上我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 个答案:

答案 0 :(得分:7)

使用.on()将事件附加到容器,如果单击.closealbum元素,则仅激活 。另外,添加event.stopPropagation()方法以防止事件进一步冒泡:

$('.container').on('click', '.closealbum', function(e) {
    $('.container').removeClass('containerhover');
    e.stopPropagation();
});
  1. 您的问题是由绑定.closealbum事件时click元素不存在而引起的。
  2. 您的元素位于另一个元素内。如果没有e.stopPropagation(),事件会冒泡,第一个事件也会被触发,撤消第二个事件的removeClass。
  3. 演示:http://jsfiddle.net/knCR8/1/