之后重新启动循环's被flag暂停
restart loop after it's paused by flag
当鼠标悬停在特定链接上时,我正在编写一些代码来替换div的内容。然后我添加了changer功能来自动循环内容替换。我为mouseover和mouseout设置了标志,实际上我可以让changer函数在mouseover上停止,但我不太清楚如何让它在mouseout上重新启动。欢迎提出任何建议。
var pause=false;
$('.banner-nav a').mouseover(function () {
pause=true;
setFeature(this);
return false;
});
$('.banner-nav a').mouseout(function () {
pause=false;
});
changer(0, 5000);
function setFeature(f) {
var m = $(f).attr('rel');
$('.banner-nav a').not(f).removeClass('active');
$(f).addClass('active');
$('#featureContainer').html($(m).html());
}
function changer(index, interval) {
var buttons = $('.trigger'),
buttons_length = buttons.length;
var button = buttons.eq(index % buttons_length);
setFeature($(button));
setTimeout(function() {
if (!pause) {
changer(++index, interval);
}
}, interval)
}
问题是changer
负责自己的延迟执行,但暂停它会停止计划的执行。另一个问题是,下一个计划执行(如果有的话)仍然发生在暂停之后。
使用setInterval
而不是setTimeout
。清除间隔以暂停,然后重新启动以取消暂停,而不是使用标志。
(function() {
var index=0;
function changer() {
var buttons = $('.trigger'),
buttons_length = buttons.length;
var button = buttons.eq(index % buttons_length);
setFeature($(button));
++index;
}
var changerInterval,
period = 5000;
function startChanger() {
if (! changerInterval) {
changerInterval = setInterval(changer, interval);
}
}
function stopChanger() {
clearInterval(changerInterval);
changerInterval = 0;
}
$('.banner-nav a').mouseover(function () {
stopChanger();
setFeature(this);
return false;
});
$('.banner-nav a').mouseout(function () {
startChanger();
});
/* could implement other functions to e.g. change the period */
function setChangerPeriod() {
...
}
window.setChangerPeriod = setChangerPeriod;
...
})
相关文章:
- 如何临时暂停浏览器渲染,然后恢复整个页面
- jQuery循环在特定位置暂停
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 最小化时暂停Javascript动画
- jQuery:暂停按钮可以暂停所有其他操作
- tiltSlider播放/暂停视频元素(如果li有当前类)
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- CSS动画暂停并使用javascript播放
- 如何暂停和恢复jquery间隔
- 如何在隐藏时暂停jquery计时器
- 具体化:如何只使用HTML和Javascript制作播放/暂停按钮
- 在 jquery 中定位暂停和播放按钮
- 暂停文档-HTML、CSS、JavaScript
- 如何在悬停时暂停setInterval
- 暂停函数执行流程,直到ajax请求完成
- 使用javascript和随机暂停/超时快速循环文本
- 如何暂停网页
- HTML5画布-暂停时的运行时间
- 避免在钛合金加速器中暂停应用程序
- 之后重新启动循环's被flag暂停