Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在处理函数时防止单击_Javascript_Html - Fatal编程技术网

Javascript在处理函数时防止单击

Javascript在处理函数时防止单击,javascript,html,Javascript,Html,我是Javascript新手,请容忍我 我有一个类似于下面的代码,每当我点击一个按钮,它都会在HTML元素上执行一些动画,问题是,如果用户多次点击,动画将被缓冲,并一次执行一个巨大的延迟 下面的代码“应该”通过禁用循环来解决问题,直到动画完成,但实际上没有。我不能改变代码的结构太多,它必须或多或少地保持这种形式 var processing = false; $("p").click(function() { if (processing == false) { for (i=0;

我是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);
}
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”属性。您可以传递一个函数来设置动画,该函数在动画完成之前不会执行:

你们看了吗?作为参考,包括动画队列。你们看了吗?作为参考,包括动画队列。