Jquery Cycle — 多个嵌套幻灯片和循环终止

2023-12-21

我正在尝试使用 jQuery Cycle 插件构建一个幻灯片,该插件在一些顶级幻灯片中包含另一层嵌套幻灯片。

主“容器”幻灯片水平滑动,然后,对于左侧包含多个图像的“容器”幻灯片,这些图像垂直向上滑动。

此处示例,因为我认为很难想象:http://dl.dropbox.com/u/2890872/js-test/index.html http://dl.dropbox.com/u/2890872/js-test/index.html

即使有六张顶级幻灯片(这是我的问题 - 第二张幻灯片仅包含一张左侧内部图像,它会停止脚本),您也只能在第二张顶级幻灯片停止之前到达它,但是您可以看到预期的转换是什么并查看整个代码。

问题在于,并非所有辅助幻灯片都具有多个图像,如果幻灯片中只有一张或更少的图像,jQuery Cycle 会自行终止。此终止还会终止顶级幻灯片,因为它是根据辅助幻灯片结束的时间停止和启动的。由于辅助幻灯片仅因一张“幻灯片”而终止,因此下一张外部顶级幻灯片永远不会被调用。我不确定如何调整代码来解决这个问题。

The js:

<script type="text/javascript">
$(function(){ 
    // init and stop the inner slideshows
    var inners = $('.slide-up').cycle().cycle('stop');

    var slideshow = $('#home-slides').cycle({
        fx: 'scrollHorz',
        speed: 300,
        timeout: 0,
        before: function() {
            // stop all inner slideshows
            inners.cycle('stop');

            // start the new slide's slideshow
            $(this).children().cycle({
                fx: 'scrollUp',
                timeout: 2000,
                autostop: true,
                end: function() {
                    // when inner slideshow ends, advance the outer slideshow
                    slideshow.cycle('next');
                }
            });
        } 
    });
});
</script>

html 的示例:

<div id="home-slides">
    <div>
        <div class="slide-up">
            <img src="i/home/slideshow/1l-1.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/1l-2.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/1l-3.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/1r.png" alt="" width="291" height="420" />
    </div>
    <div>
        <div>
            <img src="i/home/slideshow/2l-1.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/2r.jpg" alt="" width="291" height="420" />
    </div>
    <div>
        <div class="slide-up">
            <img src="i/home/slideshow/3l-1.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/3l-2.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/3r.png" alt="" width="291" height="420" />
    </div>
    <div>
         …additional slides…
    </div>
</div>

幻灯片在第二个 #home-slides > div 处终止,因为只有一张图像。 我尝试从没有内部幻灯片放映的幻灯片中删除嵌套和“幻灯片向上”类,但这没有帮助。

同样,可以在这里找到包含所有相关代码的完整工作版本:http://dl.dropbox.com/u/2890872/js-test/index.html http://dl.dropbox.com/u/2890872/js-test/index.html

----------- 已编辑 4/10 - 小更新和可能的线索 ----------

我编辑了此处和示例链接上的代码,只是为了添加一些详细信息,以消除故障排除的第一个想法。现在,只有带有辅助幻灯片的幻灯片使用“幻灯片”类。
- 我尝试在函数中为“end”回调指定“.slide-up”类('$(this).children('.slide-up').cycle…'),这确实可以防止循环因幻灯片太少而终止,但这只会使其因不匹配的元素而终止!

我得到的最接近的是在最终回调中向函数添加条件检查: (我使用 length 来检查上滑 div 是否存在。如果有更好的方法,请告诉我)

before: function() {
 if ( $(this).children('.slide-up').length != 0 ) {
    // stop all inner slideshows
    inners.cycle('stop');

    // start the new slide's slideshow
    $(this).children('.slide-up').cycle({
        fx: 'scrollUp',
        timeout: 2000,
        autostop: true,
        end: function() {
            // when inner slideshow ends, advance the outer slideshow
            slideshow.cycle('next');
        }
    });
   } else alert('NO INNER SLIDESHOW!');

这消除了直接来自 jQuery Cycle 的所有错误和终止,但主幻灯片仍然停在没有辅助幻灯片的幻灯片上。我认为需要在与启动“slideshow.cycle('next');”相关的“else”语句中添加一些内容,但我还没有找到正确的语法来使其工作。

----------- 编辑 #2 4/10 - ----------

最近的工作示例:http://dl.dropbox.com/u/2890872/js-test/index2.html http://dl.dropbox.com/u/2890872/js-test/index2.html

将 before 函数移至其自己的命名函数中以保持简洁。

function onBefore(currSlideElement, nextSlideElement, options, forwardFlag) {
     if ( $(this).children('.slide-up').length != 0 ) {
        // stop all inner slideshows
        //inners.cycle('stop');

        // start the new slide's slideshow
        $(this).children('.slide-up').cycle({
            fx: 'scrollUp',
            timeout: 2000,
            autostop: true,
            end: function() {
                // when inner slideshow ends, advance the outer slideshow
                slideshow.cycle('next');
            }
        });
       } 
      // else null;
      else $(this).parent().cycle({ 
        end: function() { slideshow.cycle('next'); }
       });
    } 

此(else 语句)允许幻灯片放映继续进行,但它不会保留原始的“幻灯片放映”选项,而只是开始使用默认的开箱即用选项播放顶级幻灯片(从一张幻灯片淡出到另一张幻灯片)接下来,不再滑动,而是停止播放辅助幻灯片)。

我不明白: 1)如何保留选项。 (我认为这就是为什么首先创建 var“幻灯片”的原因)

2)为什么 else 语句甚至是必要的 - 我不明白为什么当条件“.slide-up”语句未执行时外部幻灯片完全停止 - 我认为外部幻灯片会正常继续。


一位脸书好友解决了这个问题!谢谢,脸书朋友!

var slideshow = $('#home-slides').cycle({
    fx: 'scrollHorz',
    speed: 300,
    timeout: 0,
    before: function(curElement, nextElement, options, forwardFlag) {
        if($(nextElement).children('.slide-up').length != 0) {
            $(nextElement).children('.slide-up').cycle({
                fx: 'scrollUp',
                timeout: 2000,
                autostop: true,
                end: function() { slideshow.cycle('next'); }
            });
        }
        else {
            setTimeout(function(){ slideshow.cycle('next'); }, 2000);
        }
    }
});

工作示例在这里:http://dl.dropbox.com/u/2890872/js-test/index3.html http://dl.dropbox.com/u/2890872/js-test/index3.html我需要更多地研究 Cycle 以及他所做的更改,以充分理解“nextElement”在这段代码中的作用,但它肯定有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery Cycle — 多个嵌套幻灯片和循环终止 的相关文章

  • 未捕获的语法错误,无法识别的表达式:[object Object]

    目前正在研究新闻滚动器 请参阅我的现场示例 EXAMPLE http jsfiddle net MrTest dwMfv 5 当我按下一个 上一个箭头时 我收到错误日志Uncaught Syntax error unrecognized e
  • 使用 AJAX 来回发送信息

    使用 post 你可以向服务器发送信息 但是当你需要从服务器接收信息时怎么办呢 信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式 反之亦然 这与您的问题更相关 http docs jquery com
  • 使用 jQuery 从标签获取值

    我想从标签中获取月份和年份的值 我如何使用 jquery 获取这些
  • 将参数传递给 jquery 单击事件中的回调函数[重复]

    这个问题在这里已经有答案了 直接进入正题 我有一个 jquery 事件监听器 如下所示 number click printNumber 和一个回调函数 function printNumber number console log num
  • Backbone Marionette,复合视图初始化两次

    我正在使用一个复合视图 它的 el 上调用了 dialog 然后 复合视图列出集合中的项目 现在我尝试了多种方法来渲染集合项 在将其附加到视图之前和之后从复合视图外部获取 在视图内部获取 从我的服务器脚本预加载集合等 一切似乎都有效 但出现
  • 如何使用 jQuery 获取数组键?

    下午好 我有一个数组 其中包含一些键和值 然后我需要获取数组键而不是其中的数据 我想用 jQuery 来做到这一点 例如 我知道 PHP 有一个名为 array keys 的函数 它将数组作为参数 并返回一个数组 其中包含每个索引中的每个键
  • 如何使用 jQuery 和 .ajax 方法发送数组而不转义括号?

    我试图发送具有多个值的相同参数名称 但即使在阅读了 SO 上的帖子后也无法弄清楚如何做到这一点 我想要一个数组destination input var myObject search zip params search zip searc
  • 在一个区域显示隐藏 div

    我一整天都在寻找与我想要的东西相匹配的东西 但我在任何地方都找不到任何东西 我想创建一个显示隐藏 div 在一个固定区域显示 隐藏 div 我想要在页面的一半上有一个拇指图库 在页面的另一半上我想显示与该拇指相关的完整配置文件 因此当我单击
  • jQuery 延迟可以取消吗?

    我遇到了一种情况 我想取消延期 延迟与 ajax 调用相关联 为什么我使用延迟 我不使用 ajax 返回的普通 xhr 对象 我使用的是 jsonp 这意味着我无法使用 HTTP 状态代码进行错误处理 并且必须将它们嵌入到响应中 然后检查代
  • 检查元素是否在视口的 30% 到 60% 之间

    我正在尝试改变颜色 li 当元素占视口的 30 到 60 之间时 所以我有这个元素网格并排堆叠 如下所示 我遇到了一些插件 例如 Waypoints Viewport Checker 和其他一些插件 但没有什么好的 任何想法 我正在使用一个
  • 使用相同图像映射的多个图像 - 如何在单击时返回正确的图像参考?

    我在一个页面上有多个图像 所有图像都使用相同的图像映射 我需要知道用户点击了哪个图像 问题是 this 返回对的引用 area 而不是 img 这是代码 img src image png img src image png img src
  • 使用 jQuery 选择焦点文本在 Safari 和 Chrome 中不起作用

    我有以下 jQuery 代码 类似于这个问题 https stackoverflow com questions 480735 在 Firefox 和 IE 中工作 但在 Chrome 和 Safari 中失败 没有错误 只是不起作用 有解
  • 如何在javascript中显示目录中的所有图像?

    我想在 javascript 的帮助下动态显示目录中的所有图像 我怎样才能做到这一点 我不认为这是可能的 但如果您向 ASP NET 或 PHP 或类似 页面发出 AJAX 请求 它们可以列出文件夹中的文件并将其返回以供 Javascrip
  • 在选择下拉列表中选择特定选项时添加输入框

    我需要在选择选项时将输入添加到选择选项中 每当用户选择 其他 时 就会出现一个输入框供用户输入数据 HTML
  • 如何按日期升序对对象进行排序?

    如果我有一个对象列表 var objectList LIST OF OBJECT each object列表中包含三个属性 name date gender 如何按 对列表中的对象进行排序date 属性升序 the date 属性包含字符串
  • AngularJS 与(Angular JS + jQuery)

    我有一个关于仅使用 AngularJS 和纯 JavaScript 以及使用 AngularJS 和 jQuery 时的性能问题 ex app directive fitHeight function window return restr
  • bootstrap-datetimepicker 仅显示日期

    我正在用这个repo https github com smalot bootstrap datetimepicker由 smalot 提供 我只想选择并显示日期 对于其他一些地方 我显示数据和时间 因此选择此存储库 我可以设法仅使用它来选
  • Twitter 引导选项卡和 JavaScript 事件

    我正在一个项目中使用 twitter bootstrap 特别是它的选项卡功能 http twitter github com bootstrap javascript html tabs http twitter github com b
  • jQuery 的 .each() 方法是并行还是顺序运行其语句?

    在我的 HTML 页面中 我有 4 个列表项和以下 jQuery 代码 li hide each function this delay 500 fadeIn 1000 我假设 each 函数内的语句将为第一个列表项运行 完成后为第二个列表
  • 如何使用 jquery 生成并附加随机字符串

    一般性 我想使用 jQuery 或 javascript 将随机字符串附加到元素的属性 规格 我需要引用 CDN 上的 CSS 文件 不幸的是 每次更新该 CSS 文件时 CDN 都会更改该文件的 URL 所以我不能简单地引用静态 URL

随机推荐