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

mouseenter mouseleave jquery使用simple.carousel.js悬停并重新启动问题,jquery,hover,carousel,mouseenter,mouseleave,Jquery,Hover,Carousel,Mouseenter,Mouseleave,我创建了一个对simple.carousel.js的编辑,以便在鼠标悬停时停止旋转,但在鼠标离开时重新启动它时遇到了一个问题。我添加到simple.carousel.js的代码是: // hover stop if(config.auto!=true) $(this).mouseenter(function() { config.auto=false; }).mouseleave( function() { config.auto=true;

我创建了一个对simple.carousel.js的编辑,以便在鼠标悬停时停止旋转,但在鼠标离开时重新启动它时遇到了一个问题。我添加到simple.carousel.js的代码是:

// hover stop
if(config.auto!=true)
    $(this).mouseenter(function() {
        config.auto=false;
    }).mouseleave( function() {
        config.auto=true;
    });
您可以在这里看到完整的代码/示例以及我从上面添加的内容:

我的鼠标移动功能有问题吗

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

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

任何帮助都将不胜感激,因为这让我感到困惑。

好的,我已经做了一些研究和测试,并将“mouseleave”替换为“mouseout”,它可以工作了!试试看

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

使用true作为值是一个问题,因为您的init函数需要false boolean或int

编辑4:

在幻灯片()中,添加了startAuto()

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

解决方案如下:


在第一个代码中,auto仅在pag加载时才起作用。down vote,在mouseout上不起作用,滑块以0毫秒的间隔旋转=>Hmm,似乎工作得很好,但一旦你开始移入移出鼠标并让它重新启动,它就开始变得有点疯狂(而且很快)。你明白我的意思吗?抱歉更新了JSFIDLE,超时被触发了两次。对不起,更新了什么部分?设置超时?代码在我看来是一样的。谢谢你的帮助。嗯,我还是在学那些疯狂的快和慢的东西。特别是当你尝试使用分页框进行切换时,我注意到Firefox上的相同问题,即8&9&Chrome。
if(config.auto!=false) {
startAuto();    
}
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();
    });
}