mouseenter mouseleave jquery使用simple.carousel.js悬停并重启问题

时间:2012-11-28 19:23:38

标签: jquery hover carousel mouseenter mouseleave

我创建了一个对simple.carousel.js的编辑,以便在悬停时停止旋转木马,但是我在使用mouseleave时重新启动它有一个问题。我添加到simple.carousel.js的代码是:

// hover stop
if(config.auto!=true)
    $(this).mouseenter(function() {
        config.auto=false;
    }).mouseleave( function() {
        config.auto=true;
    });

您可以在此处看到完整的代码/示例,我在上面添加了http://jsfiddle.net/6r6sC/2/

我的mouseleave功能有问题吗?

不确定这是否会有所帮助,但我也尝试了以下但是这也不起作用:

// hover stop
if(config.auto!=true)
    $(this).mouseenter(function() {
        config.auto=false;
    }).mouseleave( function() {
        setTimeout(function() {
        slide('next');
    }, config.auto);
    });

任何帮助都会非常感激,因为这让我很难过。

2 个答案:

答案 0 :(得分:0)

使用true作为值是一个问题,导致false boolean或init函数需要int。

编辑4: http://jsfiddle.net/6r6sC/44/

幻灯片()中的

,添加了startAuto()

if(config.auto!=false) {
startAuto();    
}

EDIT3: 修复了多个定时器的问题,并创建了两个函数来处理启动/停止自动滑块。

此处的解决方案:http://jsfiddle.net/6r6sC/41/

var cachedAuto = config.auto;
var timer = "";

var startAuto = function() {

    config.auto = cachedAuto;
    clearTimeout(timer);

    timer = setTimeout(function() {
         slide('next');
    }, config.auto);   
}

var stopAuto = function() {
    clearTimeout(timer);
    config.auto = false;
}

if(config.auto!=false) {
    // start auto sliding
    startAuto();    

    // pause/start on mouse events            
    $(this).on("mouseenter", function(event){
        stopAuto();
    }).on("mouseleave", function(event){
        startAuto();
    });
}

答案 1 :(得分:-1)

好的,我已经做了一些研究和测试,并将'mouseleave'替换为'mouseout'它有效!所以试试吧。

 // hover stop
 if(config.auto!=true)
$(this).mouseenter(function() {
    config.auto=false;
}).mouseout( function() {
    config.auto=true;
});