用jQuery切换元素类?

时间:2011-09-11 02:43:42

标签: javascript jquery css class toggle

我在使用此代码时遇到了一些问题

$("#click").bind('mousedown mouseup mouseover', function(e) {
    if(e.type === 'mouseover'){
        $(this).addClass('open'); //works!
    }
    if(e.type === 'mousedown'){
       $(this).removeClass().addClass('closed'); //works!
    }
    if(e.type === 'mouseup'){
       $(this).removeClass().addClass('open');
       // The above line doesn't work :(
    }
});

Demo here 此代码仅适用于mouseover,mousedown和 NOT 用于mouseup。当我取消注释$(this).removeClass().addClass('open');时,mousedown事件也会停止触发。

任何人都知道问题可能是什么?

2 个答案:

答案 0 :(得分:3)

修正:http://jsfiddle.net/U544t/2/

您需要删除不需要的课程,然后添加您所做的课程。你最终得到了同时包含openclosed的div,因此它只显示了已关闭的图标。

答案 1 :(得分:0)

除非我遗漏某些内容,否则您可以使用toggleClass()更有效地执行此操作,而不是自己完成所有添加/删除操作。而且你可能不需要两个类,只需要一个默认状态,而.open类则需要在触发时触发活动。