单击时切换div颜色

时间:2012-03-15 05:33:51

标签: jquery css

我有以下JS:

 $(".place").mouseover(function () {
            $(this).css('background-color', '#00cc00'); // green color
        }).mouseout(function () {
            $(this).css('background-color', '#336699'); // light blue color
        });

当鼠标结束时,div变为绿色。我想当用户点击div然后div持续绿色。如果再次单击,则将颜色设置为浅蓝色。我怎么能这样做?
感谢。

4 个答案:

答案 0 :(得分:27)

改为使用.toggleClass()功能。

<强>用法:

$(".place").click(function () {
   $(this).toggleClass("green");
});

最初提供background-color: #336699并稍后使用toggleClass()覆盖此样式。

你的CSS看起来应该是这样的。

.place { background-color: #336699; }
.place:hover, .place.green { background-color: #00cc00; }

在行动here中查看此内容。

更新


更新1 Demo,悬停时为绿色。

答案 1 :(得分:3)

$(".place").click(function(){
   if($(this).css('background-color')=='#00cc00')
         $(this).css('background-color', '#336699');
   else {
         $(this).css('background-color', '#00cc00');
   }
});

答案 2 :(得分:3)

最简单的方法是切换,也许使用这样的类:

$(".place").click(function () {
        $(this).toggleClass('green-bg');
});

默认情况下为浅蓝色,然后点击它会切换“green-bg”类,当然会应用绿色背景。

在悬停和点击时,您可能会遇到一些问题,我不确定您希望优先考虑在分配bg颜色时采取的操作优先。

答案 3 :(得分:2)

使用CSS来悬停,而不是jQuery:

.place {
  background-color: #336699;
}

.place:hover {
  background-color: #00cc00;
}

正如@Starx指出的那样,使用.click()