【问题标题】:Using jQuery Cycle on Hover Only仅在悬停时使用 jQuery Cycle
【发布时间】:2012-04-18 05:51:56
【问题描述】:

我试图让 jQuery Cycle 仅在幻灯片悬停时运行(这与它们内置的功能相反)。

这是我所在的位置:http://jsfiddle.net/zSBMU/

$(document).ready(function() {

$('.slideshow').hover(
    function() {
        $(this).cycle({
            fx:     'fade',
            speed:   600,
            timeout: 300,
            pause:   0
        });
    },
    function(){
        $(this).cycle('stop');
    }
).trigger('hover');

​ });

第一次悬停时,效果很好,效果很好。但是,如果您尝试再次悬停同一个,它只会经历一次淡入淡出,而不是再次循环。

有什么想法吗?

请忽略一些粗略的代码,在这里使用一个相当老的主题,尝试清理它!

【问题讨论】:

  • 请在此处发布代码。这是关于现在帮助你和两年后的其他人......在你的小提琴消失之后。

标签: hover jquery-cycle


【解决方案1】:

您正在使用“停止”并重新创建循环,因此您在对象上添加了几个循环。

你必须使用“暂停”和“恢复”。

示例如下:

var cycleConfigured = false;
$(document).ready(function() {

    $('.slideshow').hover(
        function() {
            if(cycleConfigured)
                $(this).cycle('resume');
            else
            {
                $(this).cycle({
                    fx:     'fade',
                    speed:   600,
                    timeout: 300,
                    pause:   0
                });
                cycleConfigured = true;
            }
        },
        function(){
            $(this).cycle('pause');
        }
    ).trigger('hover');

});​

变量cycleConfigured 将用于控制我们的循环插件,检查它是否已经实例化。 或者您可以在$(document).ready() 上创建它,然后像这样暂停它:

$(document).ready(function() {
    // configure the cycle plugin
    $('.slideshow').cycle({
         fx:     'fade',
         speed:   600,
         timeout: 300,
         pause:   0
    });
    $('.slideshow').cycle('pause'); // pause it right away.

    $('.slideshow').hover(
        function() {
                $(this).cycle('resume'); // start playing.
        },
        function(){
            $(this).cycle('pause'); // pause the slideshow.
        }
    ).trigger('hover');

});​

那么您需要做的就是在 out 上使用 $(this).cycle('pause') 并在 over 上使用 $(this).cycle('resume')。

有什么可以告诉我的。

【讨论】:

  • 我唯一的问题是如果我在一页上有多个幻灯片,我不确定这里是否会发生冲突?
  • You're Welsome :) 如果你把它们都配置在$(document).ready() 上不会有任何问题,现在问题将是“资源”的使用,循环会在 dom 中添加一些元素。唯一的 “解决方案” 是终止循环并重置它,但是您将没有您正在寻找的动画。您希望使用多少个周期和图像?
  • 理论上,一个页面最多可以有 12 个。有 12 个“盒子”,但并非所有“盒子”都可能有多张照片。任何有多个图像的盒子都将被包装在“幻灯片”类中。
  • 那么替代代码应该可以工作,而且应该可以正常工作,任何事情都让我知道 :)
  • 干杯,我会试一试并报告!
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多