2012-02-21 60 views
0

我想创造这个插件同样的鼠标悬停滚动效果:(尝试将鼠标悬停在箭头)jQuery的鼠标悬停间隔

http://coffeescripter.com/code/ad-gallery/

我有这样的脚本:

$('#leftArrowScroller').bind('mouseover',function() { 
     setInterval(function(){ 
      currentGalleryScroll -= 10; 
      $('#scrollMove').animate({'left':currentGalleryScroll+'px'}); 
     },1); 
    }); 

然而,这个脚本不能达到同样的效果。它将div按照我想要的动画到左侧,但是在每个间隔后都会暂停。有关如何使滚动更平滑的任何想法,就像链接中的那个一样?谢谢!

+2

你可以在http://www.jsfiddle.net上做你的工作的一个小提琴 – JIA 2012-02-21 08:25:46

回答

0

尝试定义滚动持续时间

$('#leftArrowScroller').bind('mouseover',function() { 
      setInterval(function(){ 
       currentGalleryScroll -= 10; 
       $('#scrollMove').animate({'left':currentGalleryScroll+'px'},3000); 
      },1); 
     }); 

我不认为你需要一个setInterval函数尝试删除的setInterval

$('#leftArrowScroller').bind('mouseenter',function() {    
      currentGalleryScroll -= 10; 
      $('#scrollMove').animate({'left':currentGalleryScroll+'px'},3000); 

      }); 
+0

它仍然间隔后每隔一段时间... :( – 2012-02-21 08:26:33

+0

为什么你使用setInterval函数 – JIA 2012-02-21 08:28:38

1

如果你看一下代码,插件使用,你会得到以下功能:

function() { 
    var direction = 'left'; 
    if($(this).is('.ad-forward')) { 
    direction = 'right'; 
    }; 
    thumbs_scroll_interval = setInterval(
    function() { 
     has_scrolled++; 
     // Don't want to stop the slideshow just because we scrolled a pixel or two 
     if(has_scrolled > 30 && context.settings.slideshow.stop_on_scroll) { 
     context.slideshow.stop(); 
     }; 
     var left = context.thumbs_wrapper.scrollLeft() + 1; 
     if(direction == 'left') { 
     left = context.thumbs_wrapper.scrollLeft() - 1; 
     }; 
     context.thumbs_wrapper.scrollLeft(left); 
    }, 
    10 
); 
    $(this).css('opacity', 1); 
} 

请注意它是如何进行自己的动画的,请在间隔内设置.scrollLeft()属性。你可能希望做类似的事情。

+0

伟大的我从来没有想过那个xD多谢兄弟! – 2012-02-21 08:30:00