如何命令if(..)不执行setTimeout()

时间:2012-12-05 12:35:52

标签: javascript jquery

Demo, 登陆页面后,​​它将显示btn2(绿色区域),然后用户有2个选项:

1.用户什么都不做 - setTimeout()
2.用户将鼠标悬停至btn2 - 显示btn3(蓝色)。
我将鼠标悬停在btn2并显示btn3后陷入困境。 btn1(红色)仍然淡出如何取消它?

任何建议将不胜感激。

<div class="btn btn1"></div>
<div class="btn btn2"></div>
<div class="btn btn3"></div>
.btn{
width: 200px;
position: absolute;
}
.btn1{
background-color: red;
height: 100px;
width: 100px;
}
.btn2{
background-color: green;
height: 200px;
opacity: 0.3;
display: none;
}
.btn3{
background-color: blue;
height: 200px;
opacity: 0.3;
display: none;
}

的jQuery

$(function(){
function navctr(){
    //landing
    $('.btn1').hide();
    $('.btn2').show();
    setTimeout(function(){
        $('.btn2').fadeOut(50);
        $('.btn1').fadeIn(50);
    }, 2250);
    //after click
    $('.btn1').click(function(){
        $('.btn1').fadeOut(100);
        $('.btn2').delay(100).fadeIn(50);
    });
    //both
    $('.btn2').hover(function(){
        $('.btn2').hide();
        $('.btn3').fadeIn(100);
    });
    $('.btn3').mouseleave(function(){
        $('.btn3').fadeOut(50);
        $('.btn1').fadeIn(100);
    });
};
navctr();
}); 

1 个答案:

答案 0 :(得分:2)

使用方法clearTimeout()documentation它将删除先前在您的文档上设置的超时。

使用您的代码,它将是这样的:

$(function(){
function navctr(){
    var myTimeout;
    //landing
    $('.btn1').hide();
    $('.btn2').show();
    myTimeout = setTimeout(function(){
        $('.btn2').fadeOut(50);
        $('.btn1').fadeIn(50);
    }, 2250);
    //after click
    $('.btn1').click(function(){
        $('.btn1').fadeOut(100);
        $('.btn2').delay(100).fadeIn(50);
    });
    //both
    $('.btn2').hover(function(){
        $('.btn2').hide();
        $('.btn3').fadeIn(100);
        clearTimeout(myTimeout); // remove the setTimeout
    });
    $('.btn3').mouseleave(function(){
        $('.btn3').fadeOut(50);
        $('.btn1').fadeIn(100);
    });
};
navctr();
});