Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滑块上的自定义自动旋转器在悬停前不会触发?_Javascript_Jquery_Slider_Setinterval_Autorotate - Fatal编程技术网

Javascript 滑块上的自定义自动旋转器在悬停前不会触发?

Javascript 滑块上的自定义自动旋转器在悬停前不会触发?,javascript,jquery,slider,setinterval,autorotate,Javascript,Jquery,Slider,Setinterval,Autorotate,我最近修改了SquareSlider(),这样客户可以在他们的宣传片上有一个自动旋转器,同时,如果有人在旋转器上悬停,他们希望旋转器停止。默认情况下,滚动条每4秒旋转一次 // Automatic Rotation var autoScroller = function(){ slides.removeClass('active'); currentSlide++; if(currentSlide > slides.length - 1) currentSlide

我最近修改了SquareSlider(),这样客户可以在他们的宣传片上有一个自动旋转器,同时,如果有人在旋转器上悬停,他们希望旋转器停止。默认情况下,滚动条每4秒旋转一次

// Automatic Rotation
var autoScroller = function(){
    slides.removeClass('active');
    currentSlide++;
    if(currentSlide > slides.length - 1) currentSlide = 0;
    $(slides[currentSlide]).addClass('active');
};

// Pause the Rotation on Hover, resume when not hovering
$('.square-slider').hover(function(ev){
    clearInterval(timer);
}, function(ev){
    timer = setInterval( autoScroller, 4000);
});
但是,在添加了pause-on-hover之后,当页面加载时,它不再自动旋转,为了触发旋转,您必须首先将鼠标悬停在滑块上。如果您能让它在pageload上自动旋转而不必先悬停,我们将不胜感激

这里有一个指向JSFIDLE的链接,我在这里重新创建了它。 如果加载页面,则在将鼠标悬停在滑块上之前,不会发生自动旋转

你可以做

var  timer = setInterval( autoScroller, 4000);
    // BELOW THIS COMMENT IS THE ISSUE
    $('.square-slider').hover(function(ev){
        clearInterval(timer);
    }, function(ev){
        timer = setInterval( autoScroller, 4000);
    });    

在清除计时器之前,必须先定义计时器。i、 e.var定时器=设定间隔(autoScroller,4000)

希望这有帮助。

两件事: 1) 需要初始化计时器。亚伯拉罕有这个。 2) 现在,您的悬停将影响同一页面上的所有幻灯片

    //declare the timer
    var timer = setInterval( autoScroller, 4000);

    //use the already defined slider variable instead of selecting all sliders
    slider.hover(function(){
        clearInterval(timer);
    }, function(){
        timer = setInterval( autoScroller, 4000);
    });

非常感谢您详细阐述亚伯拉罕的答案,虽然在这个例子中不需要,但我将选择您的答案,因为这是最佳实践。