JQuery .toggleClass()一次两个类?

时间:2012-12-07 22:36:25

标签: javascript jquery html css

$('.button').click(function(){
     $(this).toggleClass('clicked')
     $('.clicked+span').toggleClass('choice');
});

我刚刚开始学习jQuery,我正在玩一些方法。因此,当单击类.button的链接时,toggleClass会同时添加两个类,但是当我再次单击它时,只删除了.clicked。尽管我认为,.choice课仍然存在。 有人可以解释我在这里缺少什么,可能是如何实现这一点 - 每次点击切换两个类?

修改

对不起,这是code 我想要实现的是当你单击“a)”时,相应的行会以某种方式突出显示。

4 个答案:

答案 0 :(得分:2)

第二次点击你的按钮..

$('.clicked+span').toggleClass('choice');

找不到您的元素,因为.clicked类刚被移除。

答案 1 :(得分:1)

如果您尝试一次添加/删除两个课程,请执行以下操作:

$('.button').click(function(){
     $(this).toggleClass('clicked choice');

});

http://jsfiddle.net/cAcJX/

答案 2 :(得分:1)

如果您正在尝试实施单选问题,则需要以下内容:

$('.button').click(function(){
                var $this = $(this),
                    wasClicked = $this.hasClass("clicked");

                //remove another selected if any
                $('.clicked').removeClass('clicked')
                             .next().removeClass('choice');
                //mark current as selected if it wasn't
                !wasClicked && $this.addClass("clicked")
                                    .next().addClass('choice');
            });

http://jsfiddle.net/tarabyte/96GZB/1/

对于多项选择题:

$('.button').click(function(){
                $(this).toggleClass('clicked')
                       .next().toggleClass('choice');
            });

http://jsfiddle.net/tarabyte/96GZB/2/

答案 3 :(得分:1)

啊,看到代码使它更清晰。

    $('.button').click(function(){
        $(this).toggleClass('clicked');
        $(this).next('span').toggleClass('choice');
    });

http://jsfiddle.net/96GZB/3/

我认为你最好让跨度成为.button的孩子,所以你可以在样式表中设置这样的东西;

.clicked span {
background: blue;
}

然后你可以完全取消.choice类。