2013-02-04 51 views
3

任何人都可以告訴我爲什麼Effect常常處於運行狀態。我的意思是你懸停3次,不必等待效果完成,並且可以等到效果運行3次。jQuery .slideUp()效果運行問題

$(function() { 
      $('#dropdown_nav li').find('.sub_nav').hide(); 
      $('#dropdown_nav li').hover(function() { 

       $(this).find('.sub_nav').slideDown(300); 
      }, function() { 

       $(this).find('.sub_nav').delay(2000).slideUp(300); 
      }); 
     }); 

這裏可以測試它:http://jsfiddle.net/QTGvJ/

回答

5

使用.stop()將清除動畫隊列

LIVE DEMO

$('#dropdown_nav li').on('mouseenter mouseleave',function() { 
     $('.sub_nav', this).stop().slideToggle(); 
}); 

隨着延遲的鼠標離開:

$('#dropdown_nav li').on('mouseenter mouseleave',function(e) { 
    var delayTime = e.type=='mouseleave' ? 1000 : 0; 
    $('.sub_nav', this).stop().delay(delayTime).slideToggle(); 
}); 

LIVE DEMO 2 WITH DELAY

瞭解更多:http://api.jquery.com/stop/

+1

非常感謝羅克森 – user2036282

+2

如果答案工作,不要忘記去接受它。 – robbrit

+0

這是正常的,在slideUp懸停再次打破效果,並不完全slideDown? – user2036282