[英]How to allow only one JavaScript 'click' method to be clicked at a time while animation is executing?
单击一个元素时,一个div
从屏幕滑出到中心。 当点击另一个元件时,其他div
在中心滑出屏幕和另一div
中滑动。
当在初始div
有时间滑动到屏幕中心之前单击另一个元素时,就会发生此问题。
$('#about').click(function(){
/* makes any visible div slide out and slides in the 'about' div */ });
$('#contact').click(function(){
/* makes any visible div slide out and slides in the 'contact' div */ });
换句话说,当您单击“ about
并立即单击“ contact
它们都会不一致地滑入。
我已经尝试过“ attrRemove”,“ unbind”,“ off” ...,尽管它们可以禁用点击,但是我无法再次启用它们。
解决此问题的一种方法是使用变量,该变量指示某个操作当前是否有效。 如果您想对事件进行排队(因此,您不必完全忽略点击(如下面的示例所示),那么可以修改代码以将其添加到某种队列中。
var slideInProgress = false;
$('#about').click(function(){
if (!slideInProgress) {
slideInProgress = true;
$("#slider").slideToggle(5000, function(){
slideInProgress = false;
});
}
});
在此示例中,一个非常简单,快速组合在一起的小提琴在这里: https : //jsfiddle.net/t8tcr0rp/
此代码可能会有所帮助。
function aboutFunc() {
$('#about').off('click');
$('#contact').off('click');
//do your stuff
$('#about').on('click', aboutFunc);
$('#contact').on('click', contactFunc);
}
function contactFunc() {
$('#about').off('click');
$('#contact').off('click');
//do your stuff
$('#about').on('click', aboutFunc);
$('#contact').on('click', contactFunc);
}
$('#about').on('click', aboutFunc);
$('#contact').on('click', contactFunc);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.