jCarousel - 如何通过自动滚动暂停悬停?

Posted

技术标签:

【中文标题】jCarousel - 如何通过自动滚动暂停悬停?【英文标题】:jCarousel - how to get pause on hover with autoscroll? 【发布时间】:2012-02-11 15:58:39 【问题描述】:

JCarousel 最近发生了变化(2011 年 1 月)。 它曾经有一种通过自动滚动实现悬停暂停的方法。

在新版本中,我无法解决如何让自动滚动在悬停时停止: 我希望滚动在鼠标悬停时停止并在鼠标悬停时重新开始。 有什么建议吗?

示例代码在这里 - http://testsite3.dk/jcarousel/ Jcarousel 在这里:github.com/jsor/jcarousel

链接到 JQuery + javascript 以在此处加载拇指 - http://testsite3.dk/jcarousel/autoscroll.txt

【问题讨论】:

此问题已修复。请看:code.google.com/p/jcarausel-lite-pause-on-hover-fixed @saikatbiswas82 您的 jcarouselite 版本似乎不起作用。 对于那些希望在 jcarouselite 中实现此功能的人,请参阅 ***.com/questions/8013595/… 【参考方案1】:

将此代码添加到您的 jcarousel initCallback(carousel)

 carousel.clip.hover(function() 
    carousel.stopAuto();
, function() 
    carousel.startAuto();
); 

【讨论】:

【参考方案2】:

我无法让前面的示例正常工作。但是我确实得到了以下内容来使用最新的 jcarousel。

$('.carousel').jcarouselAutoscroll(

    interval: 4000, 
    scroll: '+=1',
    create: $('.carousel').hover(function() 
    
        $(this).jcarouselAutoscroll('stop');
    ,
    function() 
    
        $(this).jcarouselAutoscroll('start');
    );
);

【讨论】:

试过这个并得到Uncaught Error: Cannot call methods on jcarouselAutoscroll prior to initialization; attempted to call method "stop" @Howdy_McGee 在调用 $('.carousel').jcarouselAutoscroll(); 之前你必须先调用 $('.carousel').jcarousel();【参考方案3】:

更新答案以保持最新状态。

正确答案见https://github.com/jsor/jcarousel/issues/568:

$('.jcarousel').hover(function() 
    $(this).jcarouselAutoscroll('stop');
, function() 
    $(this).jcarouselAutoscroll('start');
);

【讨论】:

【参考方案4】:

您可以在创建回调中绑定自己的悬停事件:

  .jcarouselAutoscroll(
    autostart: true,
    interval: 1000,
    scroll: '+=3',
    create: $('#thumbs').bind('mouseenter', function () 
                $(this).jcarouselAutoscroll('option', 'scroll', '+=0' );
            ).bind('mouseleave', function () 
                $(this).jcarouselAutoscroll('option', 'scroll', '+=3' );
            )

  );

【讨论】:

嗨 - 感谢您的回答。这就像演示中的魅力一样。它将用于从 Vimeo 中提取拇指并单击拇指在页面上加载视频的站点。滚动在这里也可以正常工作,视频按预期加载,并且滚动在 mouseenter 和 mouseleave 上开始和停止。但是:如果我在拇指上停留的时间不仅仅是点击,那么就像 5 sek。滚动停止但不会在 mouseleave (?) 上重新开始。我已经包含了一个指向用于在问题中加载拇指的 javascript 的链接。我无法链接到测试站点,抱歉,非常欢迎提出建议。 mouseleave 事件未按预期工作时是否会触发? 如果我在 Firebug 中观看滚动,即使拇指没有在屏幕上滚动,我也会看到滚动的节奏仍在继续。这在示例和网站上都有。示例代码按预期继续。但是在网站上(拇指从 Vimeo 加载的地方)我看到滚动只有一次,然后就没有了。 (仅在悬停不延长时才起作用)。似乎必须以某种方式重新开始......

以上是关于jCarousel - 如何通过自动滚动暂停悬停?的主要内容,如果未能解决你的问题,请参考以下文章

角度如何在悬停时使X平滑滚动(自动)

重叠时如何滚动div

内容宽度未知的 jCarousel

如何在悬停时暂停引导轮播并在鼠标悬停时恢复它?

如何在鼠标悬停在图像上时暂停动画

自动滑动 jQuery jCarousel Lite 不工作