2016-05-19 13 views
1

私は何かをしようとしています。 1つをクリックするとが追加されます。#add-conferanceの場合、メニューは.add-contactと表示されます。 をクリックすると、が表示されます。また、私はsetTimeout 7秒を作るが、私はこのsetTimeoutにしたいときに外に私のマウス.add-contactそれはマウスがそのメニューにないときに数秒後のメニューが隠れることを意味します。onclick div hide、setTimeout div hide

$('#add-conferance').click(function() { 
    $('.add-contact').animate({right: "0%"}, 600, 'swing'); 
    return false; 
}); 

    $('#hide-conferance').click(function() { 
    $('.add-contact').animate({right: "-60%"}, 600, 'swing'); 
    return false; 
}); 

$('.add-contact').mouseleave(function() { 
    window.setTimeout(function(){$(".add-contact").animate({right: "-60%"}, 900, 'swing');}, 7000); 
}); 

demo

をそして、あなたはそれを隠していないしたい場合、ユーザは、ブロックと外にマウスを移動した場合:DEMO

答えて

1

$('#add-conferance').click(function() { 
      $('.add-contact').animate({right: "0%"}, 600, 'swing'); 
     window.setTimeout(function(){$(".add-contact").animate({right: "-60%"}, 900, 'swing');}, 7000); 
     return false; 
}); 

    $('#hide-conferance').click(function() { 
      $('.add-contact').animate({right: "-60%"}, 600, 'swing'); 

     return false; 
}); 

はその後、.add-contactmouseleaveイベントを追加する必要がありますあなたがタイムアウトハンドラを追加して使用する必要がある7000ms前にもう一度ポイントしてmouseenterイベント:

var hideHandler; 
$('.add-contact').mouseleave(function() { 
    hideHandler = window.setTimeout(function(){$(".add-contact").animate({right: "-60%"}, 900, 'swing');}, 7000); 
}); 
$('.add-contact').mouseenter(function() { 
    window.clearTimeout(hideHandler); 
}); 

demo

+0

はありがとうございました。 https://jsfiddle.net/cyber007/2w3ywvu4/3/を更新しましたが、1つの問題があります。私はメニューセクションにマウスを移動し、マウスポイントは外に出ます。このシナリオのメニューにはありません。私はマウスがsettimeoutの外にあったときに再起動しないようにするため、マウスが再び戻ってきたと思う。 – pagol

+0

@pagol私の更新された回答とこのフィドルを参照してくださいhttps://jsfiddle.net/2w3ywvu4/5/あなたの問題を解決しますか? – antyrat

+0

うわー..超クール。はい、それは完全に動作します。どうもありがとうございます – pagol