如何使此代码在暂停/播放时执行鼠标操作

时间:2013-01-10 06:33:35

标签: jquery slider onmouseover

我创建了这个滑块代码,我想让它onmouseenteronmouseout暂停并继续。我将在其中一张幻灯片中运行视频,我希望在滑块移动之前,视频可以在滑块中完整播放。

 // settings
var $slider = $('.slider'); 
var $slide = 'li'; 
var $transition_time = 1000; 
var $time_between_slides = 4000; 

function slides(){
  return $slider.find($slide);
}

slides().fadeOut();

// set active classes
slides().first().addClass('active');
slides().first().fadeIn($transition_time);

// auto scroll 
$interval = setInterval(
    function(){
      var $i = $slider.find($slide + '.active').index();

      slides().eq($i).removeClass('active');
      slides().eq($i).fadeOut($transition_time);

      if (slides().length == $i + 1) $i = -1; 

      slides().eq($i + 1).fadeIn($transition_time);
      slides().eq($i + 1).addClass('active');
    }
    , $transition_time +  $time_between_slides 
);  

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我已更新您的代码here

我已将您的代码更改为//auto scroll评论:

// auto scroll 
$intVar = start();
function start(){
  return setInterval(
      function(){
      var $i = $slider.find($slide + '.active').index();

      slides().eq($i).removeClass('active');
      slides().eq($i).fadeOut($transition_time);

      if (slides().length == $i + 1) $i = -1; // loop to start

      slides().eq($i + 1).fadeIn($transition_time);
      slides().eq($i + 1).addClass('active');
    }
    , $transition_time +  $time_between_slides);
}

//mouse over
$($slide).hover(function(){
  clearInterval($intVar);
}, function(){
  $intVar = start();
});

我希望这就是你所需要的。

答案 1 :(得分:0)

var timeInterval = null, transition_time = 1000, time_between_slides = 4000;
$(document).ready(function () {
    var $slider = $('.slider');
    var $sliderLi = $slider.find('li');

    $sliderLi.hide();
    //$slider.find('li:first').addClass('active').fadeIn(transition_time);
    slideShow();
    timeInterval = setInterval(slideShow, transition_time + time_between_slides);

    function slideShow() {
        var i = $slider.find('li.active').index();

        $sliderLi.eq(i).removeClass('active').fadeOut(transition_time);

        if (i == -1 || $sliderLi.length == i + 1) {
            $slider.find('li:first').addClass('active').fadeIn(transition_time);
        } else {
            $sliderLi.eq(i + 1).addClass('active').fadeIn(transition_time);
        }
    };

    $slider.mouseenter(function () {
        clearInterval(timeInterval); //Or clearTimeout(timeInterval);
    }).mouseleave(function () {
        timeInterval = setInterval(slideShow, transition_time + time_between_slides);
    });
});

DEMO