如何在悬停时暂停幻灯片放映

时间:2013-03-13 03:58:47

标签: javascript jquery settimeout

当我将鼠标悬停在jQuery幻灯片中的图像上时,如何添加暂停效果?

$(document).ready(function () {
    slideShow();
});

function slideShow() {
    var showing = $('#slideshow .show');
    var next = showing.next().length ? showing.next() : showing.parent().children(':first');
    var timer;
    showing.fadeOut(500, function () {
        next.fadeIn(200).addClass('show');
    }).removeClass('show');
    setTimeout(slideShow, 3000);
}

4 个答案:

答案 0 :(得分:3)

var hovering = false;               //default is not hovering
$("#slideshow").hover(function () { //*replace body with your element
    hovering = true;                //when hovered, hovering is true
}, function () {
    hovering = false;               //when un-hovered, hovering is false
    slideShow();                    //start the process again
});

function slideShow() {
    if(!hovering) {                 //if not hovering, proceed
        /* Your code here*/
        nextSlide();
        setTimeout(slideShow, 1000);
    }
}

function nextSlide(){
    var showing = $('#slideshow .show');
    var next = showing.next().length ? showing.next() : showing.parent().children(':first');
    var timer;
    showing.fadeOut(500, function () {
        next.fadeIn(200).addClass('show');
    }).removeClass('show');
}

演示: http://jsfiddle.net/DerekL/mqEbZ/

答案 1 :(得分:0)

使用 .delay() 这将有所帮助。

说明:设置计时器以延迟队列中后续项目的执行。

答案 2 :(得分:0)

我认为你需要两个函数... slideShow()和其他人说暂停幻灯片()...现在在mouseout事件和mouseenter调用中调用slideshow()pauseSlideShow()

你的代码应该是这样的

$(document).ready(function(){

 $('.slider').mouseout( slideShow());
 $('.slider').mouseenter( pauseSlideShow());
 }); 
function slideShow() {
var showing = $('#slideshow .show');
var next = showing.next().length ? showing.next() : showing.parent().children(':first');
var timer;
showing.fadeOut(500, function() { next.fadeIn(200).addClass('show'); }).removeClass('show');    
timeOut = setTimeout(slideShow, 3000);        
}

function PauseSlideShow() {
window.clearTimeout(timeOut);
}

尝试

答案 3 :(得分:0)

使用Derek的答案,悬停的替代方法是使用mouseentermouseleave

参见工作幻灯片Jsfiddle: 演示: http://jsfiddle.net/highwayoflife/6kDG7/

var hovering = false;
var slideshow = $("#slideshow");

slideshow.mouseenter(function() {
    hovering = true;
}).mouseleave(function() {
    hovering = false;
    slideShow();
});

function slideShow() {
    if (!hovering) {
        # Some browsers don't interpret "display:block" as being visible
        # If no images are deemed visible, choose the first...
        var currentImg = (slideshow.children("img:visible").length) ? slideshow.children("img:visible") : slideshow.children("img:first");
        var nextImg = (currentImg.next().length) ? currentImg.next() : slideshow.children("img:first");

        currentImg.fadeOut(500, function() {
            nextImg.fadeIn(500, function() {
                setTimeout(slideShow, 2000);
            });
        });
    }
}
$(document).ready(function() {
    slideShow();
});