如何通过鼠标单击删除活动类

时间:2014-04-21 18:19:54

标签: javascript jquery css

我制作了两个框,其背景将在悬停和活动状态下更改。这是我的工作: http://jsfiddle.net/3Vbz8/

在那里,当我点击"一个"它将设置为它的活动状态(绿色背景)。没关系。当我点击" Two"时,它将设置为活动状态和"一个"将返回到它之前的状态(灰色背景)。这对我也没问题。

但是,我想要"一个"设置为活动状态,那时,如果我点击" One",它也将返回到它的正常状态(灰色背景)。类似的事件应该发生在" Two"太。我该怎么做?

我的应用脚本:

$('.toggle').click(function(){
   $('.toggle').removeClass("active");
   $(this).toggleClass("active");
});

........... UPDATE ...........

克里希纳帮我解决了这个问题:http://jsfiddle.net/3Vbz8/1/

$('.toggle').click(function(){
   $('.toggle').not(this).removeClass("active");
   $(this).toggleClass("active");
});

我注意到了一个应该为我的项目更新的问题。那个问题是:如果"一个"已开启"活跃"州,那时,如果有任何用户点击" One",它将返回到它的原始状态。但是,如果用户没有从该按钮上移除他/她的鼠标指针,该按钮也会出现在绿色背景上。这是悬停颜色。因此,如果任何用户一次又一次地点击按钮,他/她将不会理解状态是否改变,除非他/她移动他/她的指针。

所以,我需要(当鼠标指针不被用户移动时):如果有人点击" One"按钮,它变成"绿色背景"。如果用户点击" One"再次,它将转向"灰色背景" (了解更改用户不必移动他/她的鼠标指针)。如果用户一次又一次地点击按钮而不移动他/她的鼠标指针

,则简短的悬停颜色应该是无效的

1 个答案:

答案 0 :(得分:7)

使用not(this) Documentation

http://jsfiddle.net/3Vbz8/1/

$('.toggle').click(function(){
   $('.toggle').not(this).removeClass("active");
   $(this).toggleClass("active");
});

编辑:

我喜欢@Roko C.Buljan触摸CSS以区分悬停与点击(在评论中)

http://jsfiddle.net/3Vbz8/8

.toggle:hover {
    background: #888;
}

.toggle.active{
    background: green;
}