0
$('.alphabetLetter').click(function() {
    if($(this).css('color') == 'black') {
        $(this).animate({'opacity':0.2},500);
    } else if($(this).css('opacity') == '0.2') {
        $(this).animate({
            'color':'#aa0000',
            'opacity':1
        },500);
    } else {
        $(this).animate({'color':'black'},500);
    }
});

我试图在不透明度为 1 的黑色字母到不透明度为 0.2 的黑色字母到不透明度为 1 的红色字母之间进行更改,每次单击时都会发生变化。这似乎不起作用,我不知道为什么。

4

2 回答 2

1

尝试使用 rgb 值而不是颜色名称。jsFiddle在这里

$('.alphabetLetter').click(function() {
    if($(this).css('color') == 'rgb(0, 0, 0)') {
        $(this).animate({'opacity':0.2},500);
    } else if($(this).css('opacity') == '0.2') {
        $(this).animate({
            'color':'#aa0000',
            'opacity':1
        },500);
    } else {
        $(this).animate({'color':'black'},500);
    }
});

注意:您当前的逻辑将始终只执行第一个条件语句,因为您正在检查颜色是否 = 黑色,它将永远是 -else if永远不会运行,即使opacity= 0.2

于 2013-08-25T20:52:06.640 回答
0

jQuery 通过 RGB 语法处理颜色属性。如需更深入的信息,请阅读http://api.jquery.com/css/

我创建了一个小小提琴,只是为了向您和其他偶然发现这个问题的人澄清。

http://jsfiddle.net/dKXGJ/

至于您的问题,您正在检查'black'将始终返回的字符串值false。总是。您需要检查rgb(0,0,0)价值。

更好更详细的小提琴

http://jsfiddle.net/dKXGJ/3/

快乐编码,将该语法应用于您的逻辑,您应该没问题。:)

于 2013-08-25T20:56:12.720 回答