jquery 背景颜色 rgb 条件错误

标签 jquery css jquery-animate background-color

我已经测试了我的其余代码并且没问题,但在这里不起作用。

这是代码中有错误的部分。

if(bgc.css("background-color") == "rgb(38,64,163)") {
    bgc.animate({backgroundColor:"rgb(134,210,239)"},800, function() {
        $previousAnchor = $anchor,
        $anchor.fadeIn(fadetime);
    });
} else if(bgc.css("background-color") == "rgb(134,210,239)") {
    bgc.animate({backgroundColor:"rgb(38,64,163)"},800, function() {
        $previousAnchor = $anchor,
        $anchor.fadeIn(fadetime);
    });
}

注意“$previousAnchor”“$anchor”和“bgc”是变量。 我已经调查了所有这些代码,Jquery 的“backgroundColor”动画一定有问题,但我不知道如何解决它。

已编辑:

我修复了 if 语句,像这样在 RGB 代码中放置空格

if(bgc.css("background-color") == "rgb(38, 64, 163)")

现在它进入内部,但动画还不能工作。它什么也不做,继续回调函数的其余部分。

已编辑解决

对于所有对 BACKGROUND-COLOR animate jquery 有疑问的人,你需要这个: github.com

你需要一个叫做 jquery.color.js 的插件

最佳答案

添加以下 JS (jQuery color plugin ),(来自 here 的缩小版)

(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.css(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);

测试示例:

var element = $("#test");
$('#test').click(function() {
    if (element.css("background-color")==="rgba(0, 0, 0, 1)") {
        element.animate({ backgroundColor: "blue" }, 'fast');
    }else{
        element.animate({ backgroundColor: "red" }, 'fast');
    }
});

​

这是一个 fiddle : http://jsfiddle.net/GMNV9/1/

关于jquery 背景颜色 rgb 条件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979853/

相关文章:

jquery - 显示/隐藏事件行的内容

css - block 向下位移

html - 隐藏的内部DIV

css - 初学者 CSS 问题

jquery - 具有 jQuery 悬停淡入淡出效果的表格

jquery - jsplumb 动画连接线

点击时的 Jquery 动画

javascript - 使一个 DIV 扩展一个 View (即显示另一个 DIV)

javascript - 加载更多按钮位置总是离加载的内容太远

javascript - 禁止在选择时打字