2017-09-12 32 views
0

單擊元素時,div會從屏幕滑入中心。當點擊另一個元件時,在中心以外div滑落在屏幕和另div滑動。如何在動畫執行時一次只允許點擊一次JavaScript'點擊'方法?

當點擊另一個元件的初始div具有滑動到屏幕的中心的時間之前發生的問題。

$('#about').click(function(){ 
    /* makes any visible div slide out and slides in the 'about' div */ }); 

$('#contact').click(function(){ 
    /* makes any visible div slide out and slides in the 'contact' div */ }); 

換句話說,當你點擊about,並馬上點擊contact然後他們都滑入不一致。

我已經嘗試過「attrRemove」,「unbind」,「off」......雖然他們致力於禁用點擊,但我無法再次啓用它們。

+0

ü可以包括功能代碼爲每次點擊 –

+0

我不是完全清楚你想對你的點擊。僅在動畫完成時才工作? –

+0

使用超時或延遲功能 –

回答

0

您可以採取的一種方法是通過使用指示動作當前是否有效的變量。如果要排隊的事件(這樣你就不會完全無視點擊(如下面的例子是做),那麼代碼可以被修改,以將其添加到某種類型的隊列。

var slideInProgress = false; 

$('#about').click(function(){ 
    if (!slideInProgress) { 
     slideInProgress = true; 
     $("#slider").slideToggle(5000, function(){ 
     slideInProgress = false; 
    }); 
    } 
}); 

一很簡單,迅速地放在一起搗鼓這個例子是在這裏:https://jsfiddle.net/t8tcr0rp/

+0

哇!這實際上工作!我改變的唯一的事情是將'slideInProgress = false;'放在一個單獨的'setTimeout'中,並延遲它直到幻燈片執行!謝謝** P沃克**! – Eddy

0

此代碼可以幫助

function aboutFunc() { 
    $('#about').off('click'); 
    $('#contact').off('click'); 

    //do your stuff 

    $('#about').on('click', aboutFunc); 
    $('#contact').on('click', contactFunc); 
} 

function contactFunc() { 
    $('#about').off('click'); 
    $('#contact').off('click'); 

    //do your stuff 

    $('#about').on('click', aboutFunc); 
    $('#contact').on('click', contactFunc); 
} 


$('#about').on('click', aboutFunc); 
$('#contact').on('click', contactFunc);