[英]Jquery animate created element
我做了div,如果我单击它,jquery会生成子弹,并且该元素会设置为动画。 这是代码:
$('.square').click(function() {
$('<div class="bullet"></div>').appendTo($('body')).animate({
'margin-top': 554
}, 2000, function() {
$(this).remove();
});
});
当我在动画完成前没有第二次单击div时,它可以正常工作。 如果这样做,我的第二个“项目符号”将从第一个位置开始播放动画。 如何解决? 感谢帮助 :)
更新##这是有问题的jsfiddle: https ://jsfiddle.net/2ghj1x45/
为什么不使用变量使click函数超时:
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
这是因为所有元素都具有一定的尺寸,因为它们的位置不是绝对的,因此添加的每个子弹div都有显示块,因此将获得其自己的行,其高度为子弹尺寸+边距top,随着动画的增加而增加。 尝试改为使用绝对位置,以便项目符号div不会影响任何其他div的布局
$(bullet).animate({ top: value });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.