如何重新运行(从0开始)setTimeOut()?
这是我基于其他问题尝试的:(它不起作用)
var timer;
function talk() {
clearTimeout(timer);
$('#dialog').show();
timer = setTimeout(function(){
$('#dialog').hide();
}, 2000);
}
$("#dialog").hover(function () {
talk();
});
talk();
如何在settimeout上正确取消任何内容并再次运行?
你可以在这里看到它不起作用:jsfiddle.net/yrBGm
答案 0 :(得分:0)
你要问的是什么并不完全清楚,但这一行会停止你的待定时间:
clearTimeout(timer);
然后,如果你想再次启动它,你会这样做:
timer = setTimeout(function(){
$('#dialog').hide();
}, 2000);
答案 1 :(得分:0)
检查悬停是否发生。如果是这样,它会取消超时并在以后重新运行。如果没有,则超时继续:
var timer;
function talk() {
if ($('#dialog2').hasClass('talking')) {
clearTimeout(timer);
$('#dialog2').removeClass('talking');
} else {
$('#dialog').show();
timer = setTimeout(function(){
$('#dialog').hide();
}, 2000);
}
}
$("#dialog2").hover(function () {
talk();
$('#dialog2').addClass('talking');
});
编辑:
另外,当你在“var timer;”中定义了timer时,timer是未定义的,所以你可以测试它是否是未定义的,然后再在“timer = setTimeout(funcion(){...像这样:< / p>
if (timer == undefined) time = setTimeout( funciton () {
....
},time);