添加和删​​除类问题JQuery

时间:2013-05-26 12:40:22

标签: jquery

我正在尝试删除之前由JQuery事件添加的类,但它只是不会播放。请指导我!

这适用于班级:

$('.project').click(function() {
        var imageTotal = $(this).find('.gallery img').length;
        if (imageTotal === 1) {
            $('.next-image', this).hide();
            $('.prev-image', this).hide();
        } else {
            $('.next-image', this).show();
            $('.prev-image', this).show();
        }
        $('img.feature').hide();
        $('.gallery img:nth-of-type(' + imageCounter + ')', this).addClass('current');
        $(this).addClass('active');
    });

这就是我试图用以下方法删除它:

$('.back').click(function() {
        $('.gallery').hide();
        $('.back').hide();
        $('img.feature').show();
        $(this).parent('.project').find('div').removeClass('active');
        $('.prev-page').show();
    });

这是HTML结构:

<div class="project">
                <img class="feature" src="content/dream1.jpg"/>
                <div class="description">
                    <h3>Exhibition Roadshow</h3>
                    <h4>The Royal Borough of Kensington and Chelsea 2012</h4>
                </div>
                <div class="gallery">
                    <img src="content/dream2.jpg"/>
                    <img src="content/dream3.jpg"/>
                    <img src="content/dream4.jpg"/>
                    <img src="content/dream5.jpg"/>
                    <div class="next-image">&rarr;</div>
                    <div class="prev-image">&larr;</div>
                </div>
                <div class="back">S</div>
            </div>

您可以看到实时示例here,如果有帮助的话......

3 个答案:

答案 0 :(得分:1)

您正在从错误的元素中删除该类。 这一行:

$(this).parent('.project').find('div').removeClass('active');

应该是这样的:

$(this).closest('.project').removeClass('active');

由于.project是要删除活动类的元素。你上面做的是在.project元素中搜索“div”。

答案 1 :(得分:0)

你的第一个问题是: $(本).parent( '项目。 ')的找到(' DIV ') .removeClass(' 激活');

但真正的问题是,类已被删除,但是您无法终止catch事件,因此它会在您再次设置相同类的单击事件上向.project冒泡。这一切都发生在同一时间,所以似乎从未删除过类。

解决方案?在点击事件结束时添加return false;

答案 2 :(得分:0)

$('.project').click(function() {方法$(this).addClass('active');中,将有效值添加到$('.project') ...

并且您正尝试将其从$('.project')的孩子中删除... 你需要的是

$('.back').click(function() {
        $('.gallery').hide();
        $('.back').hide();
        $('img.feature').show();
        $(this).parent('.project').removeClass('active');
        $('.prev-page').show();
    });