jQuery动画没有按预期工作

时间:2013-09-28 20:14:06

标签: jquery

我正在尝试在单击按钮时添加表单。我有两个问题:为什么新按钮在开始时没有完全隐藏?我试图给它们高度为0和填充等等......为什么显示新按钮动画需要比动画的其余部分更长的时间?

演示http://jsfiddle.net/mNRem/

这是我的jQuery代码:

var duration = 3000;
var showWidth = "150px";
var formHidden = true;
var showHeight = $("#cancel-button").outerHeight(true)+"px";
var buttonPadding = $('#cancel-button').css("padding");
var buttonBorder = $('#cancel-button').css("border-width");
$('#new-name').width(0);
$('.hidden-form').height(0);
$('.buttons').css({padding: 0, "border-width": 0});
$('#change-form-button').click(function() {
  formHidden = !formHidden;
  var labelWidth  = formHidden? "0" : showWidth;
  var buttonWidth = formHidden? showWidth : "0";
  $('#new-name').animate({width: labelWidth}, duration);
  $('#change-form-button').animate({width: buttonWidth, padding: "0", "border-width": "0"}, duration);
  $('.hidden-form').animate({height: showHeight}, duration);
  $('.buttons').animate({padding: buttonPadding, "border-width": buttonBorder}, duration);
  return false;
});

1 个答案:

答案 0 :(得分:1)

对于隐藏按钮,请使用css prop:display: none;

或者更好的jQuery语句$('。buttons')。css({display:'none'});

要获得更好的动画,请尝试使用.hide().show()函数:

$('.buttons').hide("fast");

然后点击

$('.buttons').show();

请看这里:Example on JsFiddle