如何在添加后删除类

时间:2014-07-23 11:44:50

标签: javascript jquery html css

所以我需要一些帮助。我正在玩addClassremoveClass,我似乎无法在设置后删除一个类。我基本上想要的是:

  1. 当有人点击h3时,会将其添加到其父div
  2. 当有人点击添加了课程的div时,需要删除课程
  3. 第一步我走开了,它正在运作

    $(function(){
        $('div h3.itemTitle').on('click', function(){
            $(this).parent().addClass('active').siblings().removeClass('active');
        });
    });
    

    现在我定义:

    $(function(){
        $('div.active').on('click', function(){
            $(this).removeClass('active');
        });
    });
    

    它什么都不做,好像它没有看到类。它仅设置onload ...

    中设置的那些

    帮助,有人吗?

4 个答案:

答案 0 :(得分:3)

子元素" h3.itemTitle"已经有一个点击事件监听器,父母实际上无法捕获点击事件。

你的$(' div.active')on('点击',...)从未实际触发,因为你点击了h3而不是div。

我推荐这种方法:http://jsfiddle.net/c3Q6Q/

$('div h3.itemTitle').on('click', function () {
    // saves time not to write $(this).parent() everything so i store in a _parent var
    var _parent = $(this).parent();

    if (_parent.hasClass('active')) {
        _parent.removeClass('active');
    } else {
        _parent.addClass('active').siblings().removeClass('active');
    }
});

答案 1 :(得分:0)

尝试

 $('body').on('click','div.active', function(){$(this).removeClass('active');});

而不是

$('div.active').on('click', function(){$(this).removeClass('active');});

答案 2 :(得分:0)

我会这样走:

$('div').on('click', function(e){
    var el = e.target;
    if($(el).is('h3') && $(el).hasClass('itemTitle')){
       $(this).parent().addClass('active').siblings().removeClass('active');
    }else if($(el).is('div') && $(el).hasClass('active')){
       $(this).removeClass('active');
    }
});

答案 3 :(得分:0)

不确定为什么每个人都在讨论在初始DOM加载之外生成的元素。

这是一个JSFiddle,显示它有效:http://jsfiddle.net/H25bT/

代码:

$(document).ready(function() {
    $('.itemTitle').on('click', function() {
        $(this).parent().addClass('active').siblings().removeClass('active');
    });

    /* $('.parent').on('click', function() {
        $(this).removeClass('active');
    }); */

    $('.clicky').on('click', function() {
        $(this).parent().removeClass('active');
    });
});

它不适合您的原因是,如果您将removeClass click事件放在父div上,单击子文本会导致与使用哪个点击处理程序发生冲突,并且它赢得了'锻炼身体。如果您不将点击分配给父div本身,则代码可以正常工作。