2013-10-31 107 views
0

我有一個可滾動內容的架子。當您將鼠標懸停在左側或右側按鈕上時,擱板就會如此滑動。這一切都完美。如果懸停:動畫完成後重新調用函數

當您點擊左側或右側按鈕時,擱板跳過擱板的寬度。也完美地工作。

我想要做的是在跳轉之後,擱架繼續滾動,因爲此時它會一起停止,直到您重新懸停鼠標。我認爲這只是在跳轉完成後重新調用函數,所以我在.promise().done()之後添加了if (hover),但是我不確定其餘部分。

請指教。

謝謝。

Fiddle

function shelfScroll(el, modifier){ 
     var sl = el.scrollLeft(); 
     el.animate({scrollLeft: sl + (modifier * 100)}, 450, 'linear', function(){ 
       if(hover){ 
         shelfScroll(el, modifier); 
       } 
     }); 
} 
var hover = false; 
$('.scroll-arrow').each(function() { 
     var modifier = ($(this).hasClass('scroll-arrow-right')) ? 1 : -1; 
     var sib = ('.shelf-slide'); 
     var shelf_width = $(this).siblings(sib).width(); 
     $(this).hover(function() { 
       hover = true; 
       $(this).siblings(sib).stop(); 
       shelfScroll($(this).siblings(sib), modifier); 
     }, function() { 
       hover = false; 
       $(this).siblings(sib).stop(); 
     }).click(function(e) { 
       e.preventDefault(); 
       $(this).siblings(sib).stop(); 
       $(this).siblings(sib).animate({scrollLeft: $(this).siblings(sib).scrollLeft() + (modifier * shelf_width)}, 500); 
       $(this).siblings(sib).promise().done(function() { 
         if (hover){ 

         } else{ 

         } 
       }); 

     }); 
}); 
+0

這可能幫助HTTP://論壇。 jquery.com/topic/stop-and-reactivate-hover-event – CDspace

+2

你可以使用像這樣的動畫回調[http://jsfiddle.net/mNrCD/1/](http://jsfiddle.net/mNrCD/ 1 /) –

+0

我喜歡這種簡單,但你能解釋它究竟是如何工作的?我知道你在回調函數,但是修飾符是如何進入它的?謝謝。 – Jake

回答

1

檢查可能jQuery events我發現mouseover()可以處理或觸發事件。將$('.scroll-arrow').mouseover();放入您的if (hover)支票中,它應該可以工作。

編輯我試了一下在fiddle,並注意到你必須跟蹤哪些箭頭/被徘徊,但這應該讓你的軌道上