2010-10-11 106 views
1

我正在創建一個下拉菜單,我想要延遲大約250毫秒,以便在有人快速滾動按鈕時不會觸發它。延遲slideDown()/ slideUp() - jquery dropdown

這是我目前的代碼。我嘗試使用delay()方法,但它不太好。

$(".deltaDrop").hover(function(){ 
    $('.deltaDrop ul').stop(false,true).slideDown(250); 
    $('.delta').css('background-position','-61px -70px'); 
},function(){ 
    $('.deltaDrop ul').stop(false,true).slideUp(450); 
    $('.delta').css('background-position','-61px 0'); 
}); 

感謝

+0

ps。我真的不想要一個完整的答案,只需指向正確的方向:) – manycheese 2010-10-11 13:52:40

回答

4
var timer; 
timer =  setTimeout(function() { 
        -- Your code goes here! 
       }, 250); 

然後你可以使用clearTimeout()函數這樣。

clearTimeout(timer); 
+0

優秀!這正是我需要的! – manycheese 2010-10-11 13:58:44

+0

對不起,我不能''''你的答案,但我沒有足夠的代表 – manycheese 2010-10-11 14:06:57

+0

只是很高興我可以幫助。 =) – Frej 2010-10-11 14:12:13

0
setTimeout(function() { 
    $('.deltaDrop ul').slideDown() 
    }, 5000); 
0

未經檢驗的,unrefactored:

$(".deltaDrop") 
    .hover(
    function() 
    { 
     var timeout = $(this).data('deltadrop-timeout'); 

     if(!timeout) 
     { 
     timeout = 
      setTimeout(
      function() 
      { 
       $('.deltaDrop ul').stop(false,true).slideDown(250); 
       $('.delta').css('background-position','-61px -70px'); 
       $('.deltaDrop').data('deltadrop-timeout', false); 
      }, 
      250 
     ); 
     $(this).data('deltadrop-timeout', timeout); 
     } 
    }, 
    function() 
    { 
     var timeout = $(this).data('deltadrop-timeout'); 
     if(!!timeout) 
     { 
     clearTimeout(timeout); 
     $('.deltaDrop').data('deltadrop-timeout', false); 
     } 
     else 
     { 
     $('.deltaDrop ul').stop(false,true).slideUp(450); 
     $('.delta').css('background-position','-61px 0'); 
     } 
    } 
); 
2

這應該工作。

$(".deltaDrop").hover(function(){ 
    $('.deltaDrop ul').stop(false,true).hide(1).delay(250).slideDown(); 
    $('.delta').css('background-position','-61px -70px'); 
},function(){ 
    $('.deltaDrop ul').stop(false,true).show(1).delay(450).slideUp(); 
    $('.delta').css('background-position','-61px 0'); 
}); 

.delay只適用於處理動畫隊列時。不帶參數的.hide().show()不與動畫隊列交互。在.delay()之前添加.hide(1).show(1)使幻燈片動畫在隊列中等待。