Pab*_*blo 8 javascript jquery settimeout
我正在使用jQuery并为我的网站开发通知系统.通知使用setTimeout函数自动淡出.
如何停止setTimeout调用的计时器?
例如,我想在鼠标悬停在通知上时暂停setTimeout调用并继续向下计数鼠标...
我用谷歌搜索"暂停setTimeout"没有运气.
我正在使用clearTimeout清除setTimeout调用,同时淡出mouseout上的通知但是暂停效果会很好.
有任何想法吗?
Joh*_*ock 11
试试这个.
var myTimeOut;
$(someElement).mouseout( function () {
myTimeOut = setTimeout("mytimeoutfunction()", 5000)
});
$(someElement).mouseover( function () {
clearTimeout(myTimeOut);
});
Run Code Online (Sandbox Code Playgroud)
添加一个PausableTimeout类不会太难:
(可能不是有效的JS,但它不应该太难以让它工作):
function PausableTimeout(func, millisec) {
this.func = func;
this.stTime = new Date().valueOf();
this.timeout = setTimeout(func, millisec);
this.timeLeft = millisec;
}
function PausableTimer_pause() {
clearTimeout(self.timeout);
var timeRan = new Date().valueOf()-this.stTime;
this.timeLeft -= timeRan;
}
function PausableTimer_unpause() {
this.timeout = setTimeout(this.func, this.timeLeft);
this.stTime = new Date().valueOf();
}
PausableTimer.prototype.pause = PausableTimer_pause;
PausableTimer.prototype.unpause = PausableTimer_unpause;
//Usage:
myTimer = new PausableTimer(function(){alert("It works!");}, 2000);
myTimer.pause();
myTimer.unpause();
Run Code Online (Sandbox Code Playgroud)
当然,在那里添加一些错误检查是一个好主意(不希望它可以多次取消超时并最终导致数百次超时!),但我会让它成为你的工作:P
| 归档时间: |
|
| 查看次数: |
18291 次 |
| 最近记录: |