当控件悬停时,jQuery滑块卡在循环中

时间:2015-01-30 13:40:00

标签: javascript jquery html slideshow

我有一个简单的自动jQuery滑块,每隔几秒就会更改一次图片,我添加了一些div,当它们悬停时会跳转到某个幻灯片

这是我的代码

<div class="slider">
  <div class="slide">
    <div id="options">
      <div class="option" onmouseover="show1();">
      </div>
      <div class="option" onmouseover="show2();">
      </div>
      <div class="option" onmouseover="show3();">
      </div>
      <div class="option" onmouseover="show4();">
      </div>
      <div class="option" onmouseover="show5();">
      </div>
    </div>
    <div class="slider">
      <div class="pic" id="pic-1">
        <img src="img/1">
      </div>
      <div class="pic" id="pic-2">
        <img src="img/2">
      </div>
      <div class="pic" id="pic-3">
        <img src="img/3">
      </div>
      <div class="pic" id="pic-4">
        <img src="img/4">
      </div>
      <div class="pic" id="pic-5">
        <img src="img/5">
      </div>
    </div>
  </div>
</div>

    $(document).ready(function(){
    $('.pic').hide();
    i=1;
    function slider(){

    $('#pic-'+i).fadeIn('0').delay(1000).fadeOut('0',function(){
    i=i+1;if(i==6){i=1;}slider();

    });

    }
    slider();
    });
    function show1(){
        $('#pic-1').fadeIn('0').delay(1000).fadeOut('0')
    }
    function show2(){
        $('#pic-2').fadeIn('0').delay(1000).fadeOut('0')
    }
    function show3(){
        $('#pic-3').fadeIn('0').delay(1000).fadeOut('0')
    }
    function show4(){
        $('#pic-4').fadeIn('0').delay(1000).fadeOut('0')
        }
    function show5(){
        $('#pic-5').fadeIn('0').delay(1000).fadeOut('0')
    }

问题在于,首先幻灯片工作正常,直到我悬停一个元素并且动画开始循环几次,是否有一个简单的修复,不需要我重写它?

1 个答案:

答案 0 :(得分:0)

我减少了测试图像的数量,您可以根据需要添加更多图像。

我修改了你的html,为div添加了一些自定义属性data-pic。看看http://jsfiddle.net/jth30720/1/

<div class="slider">
  <div class="slide">
  <div id="options">
    <div class="option" data-pic="pic-1">1</div>
    <div class="option" data-pic="pic-2">2</div>
    <div class="option" data-pic="pic-3">3</div>
</div>
<div class="slider">
  <div class="pic" id="pic-1">
    <img src="http://www.panic.com/blog/wp-content/themes/panic/images/icon_smile2.png">
  </div>
  <div class="pic" id="pic-2">
    <img src="http://www.panic.com/blog/wp-content/themes/panic/images/icon_sad2.png">
  </div>
  <div class="pic" id="pic-3">
    <img src="https://cdn1.iconfinder.com/data/icons/logotypes/32/square-facebook-20.png">
  </div>
</div>

对于剧本,我几乎修改了所有内容。然后,您可以根据需要调整淡入淡出动画的时间。

$(document).ready(function() {
  $('.pic').hide();
  i=1;
  interv = setInterval(slider, 2000);
});
$(".option").hover(
  function() {
    clearInterval(interv);
    $('#'+$(this).attr("data-pic")).fadeIn('0');
  }, function() {
  $('#'+$(this).attr("data-pic")).fadeIn('0').fadeOut('10000',function(){
      interv = setInterval(slider, 2000);
  });
}
);
function slider(){
  $('#pic-'+i).fadeIn('0').fadeOut('10000',function(){
    i=i+1;
    if(i==4) i=1;
});
}

我希望你想要实现的目标