setInterval快速单击时堆叠
setInterval Stacks on rapid Click
本文关键字:单击 setInterval 更新时间:2023-09-26
当用户点击图像时,我正在尝试创建一个通用的计时器秒表效果。我正在使用fancybox v2.0。目标是在点击图像并加载"缩放"图像后立即触发计时器效果。然后,当用户退出"缩放"图像视图时,计时器应该停止。最终,我只想捕捉图像处于"缩放"状态的总时间。在大多数情况下,它按预期工作,但有一个小故障可能是被迫的;如果你故意连续快速点击fancybox((图像(唯一的预期结果是触发故障(,有时setInterval((将不会清除,而且似乎会自行堆叠。结果是,间隔持续时间增加了一倍,onClick((排序以某种方式被丢弃。故障只会在"缩放"状态下发生,所以请记住快速点击的时间。
http://www.alexldixon.com/clicktimerhelp.htm
frontImage.click(function () {
//$('.fancybox-overlay').addClass('Closing');
var frontTimer = setInterval(function(f) {
frontVar[0] = frontVar[0] + delay;
frontCover.val(frontVar/100);
if(($('.fancybox-overlay').is(":visible") === true) && ($('div.Closing').length > 0))
{
frontCover.css("background-color", "green");
$('.fancybox-overlay, .fancybox-close').click(function () {
$('.fancybox-overlay').removeClass('Closing');
frontCover.val(frontCover.val());
clearInterval(frontTimer);
frontCover.css("background-color", "yellow");
clearInterval(fancyOverlay);
});
} else {
$('.fancybox-overlay').removeClass('Closing');
clearInterval(frontTimer);
clearInterval(fancyOverlay);
frontCover.css("background-color", "yellow");
}
}, 1000);
var fancyOverlay = setInterval(function(sniffOverlay) {
$('div.fancybox-overlay:eq(0)').addClass('Closing');
return frontTimer;
}, 50);
return fancyOverlay;
});
解决方案是制作另一个变量,以便更快地搜索、查找和触发秒表效果。为了做到这一点,我删除了addClass的点击功能,而是将其放在一个有条件的新间隔中,该间隔将无限期地在点击时运行,直到生成fancybox覆盖。这确保了无论实际的定时器功能如何,无论点击速度或功能顺序如何,条件"嗅探器"都将始终按预期工作;因为我没有我可以点击0毫秒每秒。。。
frontImage.click(function () {
var frontTimer = setInterval(function(f) {
frontVar[0] = frontVar[0] + delay;
frontCover.val(frontVar/100);
if(($('.fancybox-overlay').is(":visible") === true) && ($('div.Closing').length > 0))
{
frontCover.css("background-color", "green");
$('.fancybox-overlay, .fancybox-close').mouseup(function () {
frontImage.removeClass('Closing');
frontCover.val(frontCover.val());
clearInterval(frontTimer);
frontCover.css("background-color", "yellow");
});
} else {
frontImage.removeClass('Closing');
clearInterval(frontTimer);
frontCover.css("background-color", "yellow");
}
}, 1000);
var fancyOverlay = setInterval(function(sniffOverlay) {
if($('div.fancybox-overlay:eq(0)').length === 0)
{
frontImage.removeClass('Closing');
frontCover.css("background-color", "yellow");
frontCover.val(frontCover.val());
clearInterval(frontTimer);
} else {
frontImage.addClass('Closing');
return frontTimer;
}
}, 0);
});
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 单击F5时如何停止页面加载
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 单击jquery清除输入值
- 单击按钮以等待单击按钮
- 在单击href链接的同时下载文件
- Javascript:setInterval'简历'而不是'重置'单击按钮
- Javascript 在单击时对 setInterval 不起作用
- setInterval在单击时重置
- setInterval 不允许同时单击事件 - javascript
- JavaScript SetInterval () 在单击后不起作用
- 如何让我在我的画廊中针对 setInterval 单击项目符号
- 如何在单击时停止setInterval函数,并在几秒钟后重新启动
- 在传递参数时,如何让setInterval()从函数内部执行单击
- 带有单击事件的Setinterval根本不起作用
- setInterval快速单击时堆叠
- Javascript在setInterval上运行函数,然后单击
- 如何在用户单击时触发 setInterval 函数