Javascript在处理函数时防止单击
我是Javascript新手,请容忍我 我有一个类似于下面的代码,每当我点击一个按钮,它都会在HTML元素上执行一些动画,问题是,如果用户多次点击,动画将被缓冲,并一次执行一个巨大的延迟 下面的代码“应该”通过禁用循环来解决问题,直到动画完成,但实际上没有。我不能改变代码的结构太多,它必须或多或少地保持这种形式Javascript在处理函数时防止单击,javascript,html,Javascript,Html,我是Javascript新手,请容忍我 我有一个类似于下面的代码,每当我点击一个按钮,它都会在HTML元素上执行一些动画,问题是,如果用户多次点击,动画将被缓冲,并一次执行一个巨大的延迟 下面的代码“应该”通过禁用循环来解决问题,直到动画完成,但实际上没有。我不能改变代码的结构太多,它必须或多或少地保持这种形式 var processing = false; $("p").click(function() { if (processing == false) { for (i=0;
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);
}
var处理=false;
$(“p”)。单击(函数(){
if(处理==false){
对于(i=0;i,可以使用jQuery伪选择器在元素已设置动画的情况下提前中断:
$("p").click(function() {
if ($(this).is(':animated')) return;
// The rest of your normal code.
});
演示:您可以使用jQuery伪选择器在元素已设置动画的情况下提前进行切换:
$("p").click(function() {
if ($(this).is(':animated')) return;
// The rest of your normal code.
});
演示:“动画”可能会启动一个持续半秒的事件,但实际上并不需要半秒来执行。因此,每次单击的每个“品尝者”调用都会在下一次单击之前快速执行
解决此问题的一种方法是依赖animate的“complete”属性。您可以传递一个函数来设置动画,该函数在动画完成之前不会执行:
“animate”可能会启动一个持续半秒的事件,但实际上并不需要半秒来执行。因此,每次单击的每个“tastor”调用都会在下一次单击之前快速执行
解决此问题的一种方法是依赖animate的“complete”属性。您可以传递一个函数来设置动画,该函数在动画完成之前不会执行:
你们看了吗?作为参考,包括动画队列。你们看了吗?作为参考,包括动画队列。