2012-07-05 165 views
1

我在这里的滑块有问题。我想在悬停滑块时暂停它。不幸的是,我不明白这一点。有任何想法吗?更新链接的jsfiddle:http://jsfiddle.net/fZYK4/jquery暂停悬停滑块

$(function(){ 
    var slide = $('.productSlide'); 
    $('.productSlider ul').removeClass('displaynone'); 

    slide.not(':first').hide(); 
    $('.productSlider ul a:first').addClass('active'); 
    $('.productSlider ul a').on('hover', function(e){ 
     e.preventDefault(false); 
     var target = $(this).attr("href"); 
     $('.productSlider ul a').removeClass('active'); 
     $(this).toggleClass('active'); 
     slide.not('#'+target).hide(); 
     $(target).show(); 
    }); 
    var counter = 0; 
     if(slide.length > 1){   
      slide.hide(); 
      slide.first().show(); 
      setInterval(function() { 
       slide.eq(counter).hide(); 
       counter++; 
       if (counter == slide.length) { 
        counter = 0; 
       } 
       slide.eq(counter).show(); 
       $('.productSlider ul a').removeClass('active'); 
       $('.productSlider ul a').eq(counter).toggleClass('active'); 
      }, 5000);   
     }; 
}); 
+0

提交jsfiddle.net版本 – darkAsPitch 2012-07-05 16:00:49

+0

你得到它的工作 – sabithpocker 2012-07-05 16:36:28

回答

2

您必须分配要设置

var counter = 0; 
var myInterval; 
if (slide.length > 1) { 
    slide.hide().first().show(); 
    myInterval = setInterval(function() { 
    // ... and so on 

的间隔和清除它悬停

$('.productSlider ul a').on('mouseenter', function(e){ 
    clearInterval(myInterval); 
    // ... and so on 

如果要重置,如果用户悬停你最好包装这个功能:

function doAnimation() { 
      return setInterval(function() { 
       slide.eq(counter).hide(); 
       counter++; 
       if (counter == slide.length) { 
       counter = 0; 
       } 
       slide.eq(counter).show(); 
       $('.productSlider ul a').removeClass('active'); 
       $('.productSlider ul a').eq(counter).toggleClass('active'); 
      }, 5000); 
     } 

,并调用它,你想让它开始,例如在鼠标离开:

$('.productSlider ul a').on('mouseleave', function(e){ 
    myinterval = doAnimation(); 
+0

包装在一个函数setInterval的逻辑,然后做setAnimation(真)和setAnimation(false)开始/停止动画 – sabithpocker 2012-07-05 16:06:57

+0

@sabithpocker有效点那里 – 2012-07-05 16:08:26

+0

看起来像分裂悬停到mouseenter和mouseleave将呈现答案完成,良好的实现与返回setInterval ID – sabithpocker 2012-07-05 16:17:01