Jquery动画backgroundColor不工作

时间:2015-01-06 20:11:26

标签: javascript jquery html css

当你点击一个按钮时,我试图让背景颜色淡入(然后我最终会希望它淡出)。我可以通过以下方式获得改变颜色的背景:

$("#" + lblqty).css("background","#e9f1ff");

但是当我尝试使用动画(如下)时,它不起作用。什么都没发生,我甚至没有得到javascript错误:

$("#" + lblqty).animate({ backgroundColor: "#e9f1ff"}, 800);

我把代码放在JSFiddle中,这样你就可以看到它的实际效果。当你点击" item"时会发生什么?或者选中复选框,会出现一个div,显示"数量1"和+和 - 符号。单击+号时,它应将数量增加1,背景应更改颜色。这是链接:http://jsfiddle.net/ew52wyLm/1/



$(".calccheckbox").change(function() {
  var checkid = $(this).attr("id");
  var qtyid = "qty_" + checkid;
  var lblqty = "qtylbl_" + checkid;
  var aic = "aic_" + checkid;
  if (this.checked) {
    $(this).attr("value", checkid + "_1");
    $("#" + qtyid).html("1");
    $("#" + lblqty).show(300);
    // $("#" + aic).css("background","#b6d1ff");
    // $("#" + lblqty).css("background","#e9f1ff");        
  } else {
    $(this).attr("value", checkid);
    $("#" + qtyid).html("");
    $("#" + lblqty).hide(300);
  }
});
$(".calcaddbutton, .calcremovebutton").click(function(event) {
  var button = $(this);
  var checkid = $(this).attr("id");
  checkid = checkid.slice(3);
  var qtyid = "qty_" + checkid;
  var qty = $("#" + qtyid).html();
  var aic = "aic_" + checkid;
  var lblqty = "qtylbl_" + checkid;
  if (button.hasClass("calcaddbutton")) {
    if (qty > 49) {
      alert("You may only add 50 of each item");
    } else {
      qty++;
      $("#" + qtyid).html(qty);
      $("#" + checkid).attr("value", checkid + "_" + qty);
      // $("#" + lblqty).css("background","#e9f1ff");
      $("#" + lblqty).animate({
        backgroundColor: "#e9f1ff"
      }, 800);
    }
  }
  if (button.hasClass("calcremovebutton")) {
    if (qty < 2) {
      $("#" + qtyid).html("");
      $("#" + checkid).attr("value", checkid);
      var lblqty = "qtylbl_" + checkid;
      $("#" + lblqty).hide(300);
      $("#" + checkid).attr("checked", false);
    } else {
      qty--;
      $("#" + qtyid).html(qty);
      $("#" + checkid).attr("value", checkid + "_" + qty);
    }
  }
  return false;
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="additemcontainer">
  <div id="aic_1170">
    <label for="1170">
      <input type="checkbox" class="calccheckbox" value="1170" name="items[]" id="1170" />Item</label>
  </div>
  <div class="qtylbl" style="display:none;" id="qtylbl_1170">Quantity: <span class="qty" id="qty_1170"></span> 
    <a href="#" class="calcaddbutton" id="add1170">
      <div class="calcbuttoncontainer"><span class="calcbutton glyphicon glyphicon-plus">+</span>
      </div>
    </a> <a href="#" class="calcremovebutton" id="rem1170"><span class="calcbutton glyphicon glyphicon-minus">-</span></a>
  </div>
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

您无法使用jQuery的默认动画功能为背景颜色设置动画。

然而,你可以做的是在原始div下面放置另一个不同颜色的div,然后在原始div上设置不透明度的动画,以便底层div的颜色显示出来。

答案 1 :(得分:0)

您可以使用Jquery UI库为背景颜色设置动画。

包括你的jquery库和jquery ui库,它应该可以工作。

http://jqueryui.com/animate/

答案 2 :(得分:0)

正如多人提到的,这与jQuery无关,但Velocity.js可以实现。 Velocity.js动画的表现要好得多,尤其是在移动设备上!