.removeClass不兼容addClass的作用吗?

时间:2010-12-09 07:00:13

标签: javascript jquery

请原谅我是个菜鸟,但不应该这样做吗?

$(document).ready(function() {
    $('.button').click(function() {
       $(this).addClass('button-clicked');
    });

    $('.button-clicked').click(function() {
        $(this).removeClass('button-clicked');
    });

});

不应该第二次单击删除该类并将其恢复为.button?

这是jsfiddle:http://jsfiddle.net/pXdwM/

2 个答案:

答案 0 :(得分:9)

不,因为在您调用第二个click()时,该按钮没有“.button-clicked”,因此未分配事件处理程序。你可以像这样重写它

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

或使用live()

$('.button-clicked').live("click", function() {
    $(this).removeClass('button-clicked');
});

答案 1 :(得分:2)

您正在使用“.button-clicked”类向每个元素添加一个事件,但在您实际点击之前该类不适用。因此,您需要将第二个侦听器移动到第一个回调中,或使用toggleClass函数:

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