我正在使用jQuery UI来动画化背景颜色。我有一个包含5个项目的列表,每个li元素都有不同的背景颜色,这些颜色在css中指定,例如:
li:nth-child(1) {
background-color: rgb(147, 215, 224);
}
每个li里面都有一个复选框。我希望它的功能是这样的:
所有LI中的复选框当前都被勾选。当li内部的复选框未被勾选时,li将具有特定的背景颜色(此背景颜色将对所有LI相同)。复选框再次被勾选后,LI将动画显示到之前的背景颜色。我得到了这个代码,但我知道它很糟糕。当我取消复选框时,它运行得很好,将背景颜色动画显示为我想要的颜色,但是当我无法让它在复选框再次被勾选时正常工作,所以我让它在动画完成后,删除style属性。结果如下:
当我点击输入时,li会将其背景颜色动画显示为我想要的颜色,但是当我再次点击并且复选框再次被勾选时,它会非常快地返回到其正常颜色。这也存在许多错误,无法确定复选框是否已经被勾选。这是我的当前代码:
var state = true;
$( "li input:checked" ).click(function() {
if ( state ) {
$(this).parent().parent().animate({
backgroundColor: "#ECE7D2",
color: "#fff"
}, 1000 );
} else {
$(this).parent().parent().animate({
}, 1000, "swing", function() {
$(this).removeAttr("style");
} );
};
state = !state;
});
简单来说,这是一个包含5个项和指定背景颜色的列表。已加载Jquery UI。当其中一个复选框被点击(未选中),改变该项的背景颜色为某种颜色。当再次点击(选中)时,将其更改为之前的正常颜色,或者基本上取消我们先前所做的动画背景颜色。希望我表达清楚。
谢谢。
更新: