addClass无法正常工作

时间:2013-11-03 20:51:10

标签: jquery css addclass removeclass

这是我的代码。我想使用addClass切换类,出于某些原因我不想使用toggleClass。我遇到的问题是添加了名为selected的css类,但未被not_selected替换。isSelected=0仅表示选择了td

<script type="text/javascript"> 


var isSelected = 0;

$("td").click(function(){
    if(isSelected==0)
    {
        $(this).removeClass('not_selected');
        $(this).addClass('selected');
        isSelected=1;
    }

});

$("td").click(function(){
    if(isSelected==1)
    {
        $(this).removeClass('selected');
        $(this).addClass('not_selected');
        isSelected=0;
    }
});

以下是我的css代码:

.selected
{
    background: black;
    color:white;
    font-weight: bold;
}

.not_selected
{
    background: white;
    color:black;
    font-weight: normal;
}

2 个答案:

答案 0 :(得分:1)

尝试将两者合并为一个功能。它是可能保证(感谢Barmar!)一个处理程序在另一个之前运行,然后自动将其切换回不需要的处理程序。这样,它将一举检查isSelected==0isSelected==1

$("td").click(function(){
    if(isSelected==0)
    {
        $(this).removeClass('not_selected');
        $(this).addClass('selected');
        isSelected=1;
    } else if(isSelected==1)
    {
        $(this).removeClass('selected');
        $(this).addClass('not_selected');
        isSelected=0;
    }
});

答案 1 :(得分:1)

看看这个小提琴:http://jsfiddle.net/bukfixart/NYGh5/

问题是您的事件处理程序

$("td").click(function(){
    if(isSelected==0)
    {
        $(this).removeClass('not_selected');
        $(this).addClass('selected');
        isSelected=1;
    } else {
        $(this).removeClass('selected');
        $(this).addClass('not_selected');
        isSelected=0;
    }
});

你应该在一个回调函数中完成整个工作。不是两个。否则,这些功能会相互启用/禁用。