我做了div,如果我点击它,jquery制作子弹并且该元素是动画的。这是代码:
$('.square').click(function() {
$('<div class="bullet"></div>').appendTo($('body')).animate({
'margin-top': 554
}, 2000, function() {
$(this).remove();
});
});
在动画完成之前我没有在div上第二次点击时,它可以正常工作。如果我这样做,我的第二个“子弹”从第一个位置开始动画。 如何解决?谢谢你的帮助:))
## UPDATE 这是有问题的jsfiddle: https://jsfiddle.net/2ghj1x45/
答案 0 :(得分:1)
为什么不用变量超时点击功能:
var animating = false;
$('.square').click(function() {
if(!animating) {
animating = true;
setTimeout(function() {
animating = false;
}, 2000);
$('<div class="bullet"></div>').appendTo($('body')).animate({
'margin-top': 554
}, 2000, function() {
$(this).remove();
});
}
});
更新了JSfiddle
答案 1 :(得分:1)
它是因为元素都有一个大小,因为它们没有绝对定位所以你添加的每个项目符号都有显示块,因此它将获得它自己的行所在的位置高度是子弹大小+边缘顶部,随着动画的增加而增加。尝试使用绝对位置,这样子弹div不会影响任何其他div的布局
$(bullet).animate({ top: value });