【问题标题】:Skip first slide after first loop jQuery cycle plugin在第一个循环之后跳过第一张幻灯片 jQuery 循环插件
【发布时间】:2013-02-01 12:24:29
【问题描述】:

我正在为我的 drupal 网站使用幻灯片 cycle.all.js jquery 插件。(http://jquery.malsup.com/cycle/) 我试图在第一张幻灯片循环一次后跳过它。不知道该怎么做,有人可以给我提示或解决方案吗?

谢谢

【问题讨论】:

    标签: jquery drupal slideshow jquery-cycle skip


    【解决方案1】:

    也在努力解决这个问题——使用以下代码成功

    $('.slider').cycle({
      after: onAfter; 
    }); 
    
    function onAfter(curr,next,opts) {
      //if next slide is 0, then it's the first slide. switch to "1", second slide
      if(opts.nextSlide == 0 ) {opts.nextSlide = 1}; 
    }
    

    【讨论】:

      【解决方案2】:

      在插件中,您可以选择startingSlide,这是要开始的幻灯片的索引(0 是第一个)。因此,在显示第一张幻灯片后,您可以尝试将此选项更改为 1 以在下一个循环中跳过第一张。

      这样的事情可能会奏效:

      $('#mydiv').cycle({ 
          after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
              $(this).cycle({startingSlide: 1});
          }
      });
      

      【讨论】:

      • @LarsKerff 是的,我试过了,但我不确定它会起作用。您可以将此解决方案与 Cristy 中的解决方案混合使用,以在 after 回调中从幻灯片中删除第一张图片
      【解决方案3】:

      我知道这可能不是最好的方法,但它似乎有效。

      $(document).ready(function() {
          //Call the slider so that the images overlap
          $('.slideshow').cycle({
              timeout:  800,
              speed: 200
          });
          //Display the first slide for 1000ms
          setTimeout(function(){
              //Remove first slide
              $('.slideshow img:first').remove();
              //Reinit the cycle
              $('.slideshow').cycle('destroy').cycle({
                  timeout:  800,
                  speed: 200
              });
              }, 1000);
      });
      

      http://jsfiddle.net/Q8HK3/3/

      【讨论】:

      • 我更喜欢koopajah的回答
      • 好吧,我认为 startingSlide 只会让滑块在第一次启动时从该帧开始,但仍会循环遍历所有幻灯片。
      • 嗯,你可能确实是对的,我的反应有点快。我的借口。我会用两个答案来弄清楚。谢谢
      • 更新了答案,所以现在第一张幻灯片将由循环插件滑动(这意味着您可以使用任何您想要的过渡效果)。
      • 嗯尝试了几件事。它实际上删除了第一张幻灯片,这是有效的。但是我的滑块现在向我显示了一张空的第一张幻灯片,即使根本没有 nog
        。不知道如何解决这个问题。
      【解决方案4】:
      $(window).ready(function() {
      $('#slideshow').cycle({
      fx: 'fade',
      startingSlide: 0,
      random:  1,
      speed: '200', 
      timeout:'2000',
      delay: 5000,
      next:   '#next', 
      prev:   '#prev', 
      slideResize: true,
      containerResize: false,
      width: '100%',
      fit: '1',
      cleartypeNoBg: 'true',
      cleartype: 'true',
      after: onAfter
      }); 
      
      function onAfter(curr,next,opts) {
      
        if(opts.nextSlide == 0 ) {opts.nextSlide = 1}; 
      }
      
      });
      
      
      
          $(document.documentElement).keyup(function (e) {
          if (e.keyCode == 39)
          {        
             $('#slideshow').cycle('next');
          }
      
          if (e.keyCode == 37)
          {
              $('#slideshow').cycle('prev');
          }
      
      });
      function MM_goToURL() { //v3.0
        var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
        for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
      }
      

      【讨论】:

      • 任何想法,它适用于自动播放,但如果单击下一个/上一个按钮或使用键盘上的箭头键,它会显示第一张幻灯片?
      • 你能解释一下发生了什么吗?
      【解决方案5】:

      管理员也可以通过滑块 API 执行此操作(但第一张幻灯片可能会闪烁一秒钟:():

      var ended = false;
      revapi1.bind("revolution.slide.onchange",function (e,data) {
          var totalSlides = revapi1.revmaxslide();
          if (data.slideIndex === totalSlides) {
             ended = true;
          }
      });
      revapi1.bind("revolution.slide.onbeforeswap",function (e, data) {
          if (ended && data.nextslide.index() === 0) {
            console.log("Slider: skip first slide after loop")
            revapi1.revshowslide(2); 
            ended = false;
          } 
      });
      

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 1970-01-01
        • 2023-03-29
        • 2017-11-02
        • 1970-01-01
        • 2011-09-16
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多