0

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

1. 用户什么都不做 - setTimeout()
2. 用户悬停到btn2- 显示btn3(蓝色)。
我停留在 2. 后悬停btn2btn3显示。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();
}); 
4

1 回答 1

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();
}); 
于 2012-12-05T12:37:12.700 回答