var mark2=true;
$(".right").click(function(){
if(mark2){
move(1);
mark2=false;
}
})
fonction déplacer(obj){
obj.animate({
width: arrW[index],
height: arrH[index],
opacity: arrO[index],
left: arrL[index],
top: arrT[index]
},500,function(){
mark2=true;
})
}
Cliquez sur $(".right") pour exécuter la fonction de déplacement, principalement pour ajouter une animation à l'élément obj. Afin d'éviter que $(".right") ne clique trop vite et ne chevauche l'animation, mark2 est utilisé pour la contrôler. . Lorsque l'animation est terminée, c'est-à-dire que la marque sera vraie après 500 millisecondes. Cliquez sur $(".right") pour exécuter, sinon elle ne s'exécutera pas. Mais j'ai une question, c'est-à-dire quand le clic. la vitesse est supérieure à 500 millisecondes, la marque dans l'instruction if Il n'y avait aucune chance de l'exécuter, alors j'ai cliqué à nouveau. Cela ne signifie-t-il pas que l'animation est toujours superposée ? Parce que la marque est toujours vraie, il semble que ma compréhension soit fausse, car le programme peut être exécuté normalement, j'espère donc que quelqu'un pourra me donner des conseils sur le processus d'exécution du programme
Je comprends que le cœur de votre problème est que la vitesse de clic est supérieure à 500ms. C'est vrai, seuls
mousedown mouseup
事件后才会触发click
les événements se déclenchent les uns après les autres sur le même élément. move() ne sera exécuté qu'après le déclenchement de l'événement clickLa situation de délai d'attente que vous envisagez ne se produira donc pas.
Si vous souhaitez utiliser le contrôle variable, il est préférable de déplacer mark2 vers le haut pour le rendre plus facile à comprendre. Le processus est le suivant :
Si vous :
Cliquez à droite -----》Exécutez une animation asynchrone-----》mark2 = false ----(après 0,5 s)----》mark2 = true;
Donc, peu importe la façon dont vous cliquez, que ce soit supérieur à 0,5 s ou inférieur à 0,5 s, à moins que l'animation ne soit terminée et que mark2 soit vrai, la condition if n'entrera pas du tout