[英]If else statement Jquery help simple
我无法使我的else语句正常工作。 如果背景颜色为红色,我想将背景颜色从红色更改为蓝色,如果背景颜色为蓝色,我想将其更改为红色。 我看不到下面的代码为什么不起作用,有人可以帮忙吗?
$(".box").css({ "background-color": "red" }); $(".box").click(function() { if ($(".box").css({ "background-color": "red" })) { $(".box").css({ "background-color": "blue" }); } else { $(".box").css({ "background-color": "red" }); } });
.box { height: 100px; width: 100px; }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </head> <body> <div class="box"></div> </body> </html>
问题是您的if
条件, .css()
方法,该方法以setter格式使用时,始终返回jQuery对象,这就是为什么else部分未执行的原因。
如果要比较background-color
则需要使用.css()
的getter
版本,例如if($(".box").css('background-color') == 'red')
,但是浏览器返回的颜色属性的值将取决于浏览器(某些浏览器可能返回hexa值的rgb
值),因此进行比较可能并不总是可行。
一个简单的解决方案是使用css类来设置元素的样式,并使用toggleClass()
对其进行切换,在下面的代码段中,我们将red
的背景色分配给box
类,然后clicked
类将颜色覆盖为blue
然后使用toggleClass
来单击该元素即可添加/删除该类。
$(".box").click(function() { $(this).toggleClass("clicked"); });
.box { height: 100px; width: 100px; background-color: red; } .box.clicked { background-color: blue; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <div class="box"></div>
只需检查css属性background-color
的值
var color = $(".box").css( "background-color" );
这是完整的代码
$(".box").css({ "background-color": "red" }); $(".box").click(function() { var color = $(".box").css( "background-color" ); if ( color == "rgb(255, 0, 0)" ) { $(".box").css({ "background-color": "blue" }); } else { $(".box").css({ "background-color": "red" }); } });
.box { height: 100px; width: 100px; }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </head> <body> <div class="box"></div> </body> </html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.