我是 Javascript 新手,请耐心等待。
我有一个类似于下面的代码,每当我单击一个按钮时,它都会在 HTML 元素上执行一些动画,问题是,如果用户单击多次,动画将被缓冲并以巨大的延迟执行立刻。
下面的代码“应该”通过禁用循环直到动画完成来解决问题,但事实并非如此。我不能过多改变代码的结构,它或多或少必须保持这种形式。
var processing = false;
$("p").click(function() {
if (processing == false) {
for (i=0; i<5; i++) {
if (processing == false)
processing = true;
tastor();
}
processing = false;
}
});
function tastor() {
zubi = parseFloat($('p').css('font-size'));
$('p').animate({'font-size': zubi+i}, 500);
}
最佳答案
您可以使用:animated
jQuery 伪选择器在元素已经有动画的情况下提前爆发:
$("p").click(function() {
if ($(this).is(':animated')) return;
// The rest of your normal code.
});
关于Javascript 在处理函数时防止点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359667/