【问题标题】:cycling images in jQuery - randomize it?在 jQuery 中循环图像 - 随机化它?
【发布时间】:2014-12-19 00:10:28
【问题描述】:

我有一个网站,其 div 包含一些图像:

 <div class="slideshow">
            <img src="lib/images/grid/slideshow/a-960x305/a_pic1.jpg" width="960" height="305" alt="1" class="first" />
            <img src="lib/images/grid/slideshow/a-960x305/a_pic2.jpg" width="960" height="305" alt="2" />
            <img src="lib/images/grid/slideshow/a-960x305/a_pic3.jpg" width="960" height="305" alt="3" />
            <img src="lib/images/grid/slideshow/a-960x305/a_pic4.jpg" width="960" height="305" alt="4" />
  </div>

请注意,第一个图像有一个名为 first 的类名。这样一来页面通过 css 一次只显示一张图片:

这是 CSS:

/*begin slideshow*/
div.slideshow                              { margin:0 0 5px 0; /*height:305px;*/ } /*for the jQuery cycle plug in*/
div.slideshow img                          { display:none;}
div.slideshow img.first                    { display:block;}
.caption                                   { text-align:center; font-weight:bold; color:#1F7FB6;}
/*end slideshow*/

我正在使用 jquery 循环库来循环浏览图像,如下所示:

 <script type="text/javascript">
        $(document).ready(function () {
            $('.slideshow').cycle({
                fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
                timeout: 7000,
                after: function () {
                    $('.caption').html(this.alt);
                }
            });
        });
    </script>

问题是页面当然总是从第一张图片开始,有没有办法让它随机化一点,这样它就可以开始一张随机图片,而不是总是从a_pic1.jpg开始?

【问题讨论】:

    标签: jquery css jquery-cycle


    【解决方案1】:

    在jQuery循环options中将random设置为1

    random: 0, // true 表示随机,false 表示序列(不适用于 shuffle fx)

    $(document).ready(function () {
        $('.slideshow').cycle({
            fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
            timeout: 7000,
            after: function () {
                $('.caption').html(this.alt);
            },
            random: 1 // <-- add this
        });
    });
    

    【讨论】:

      【解决方案2】:

      我对循环库不熟悉,但是这里是一个使用数组的例子:

      <script>
      
      var banners = new Array("#banner1","#banner2","#banner3","#banner4");
      
      var counter = //random number between 0-3;
      
      $(document).ready(function()
      {
          nextBanner();
      });
      
      
      function nextBanner()
      {
          var currentBanner = counter;
          counter++;
      
          if (counter > banners.length -1)
          {
              counter = 0;
          }
          $( banners[currentBanner] ).fadeOut(300 );
          setTimeout('$( banners[counter] ).fadeIn( 300)', 100);
          setTimeout("nextBanner()", 9000);
      }
      
      </script>
      
      <div id="banner1" class="banner-item">      
          <img src="/banner1.jpg" />
      </div>
      
      <div id="banner2" class="banner-item" style="display: none;">       
          <img src="banner2.jpg" />
      </div>
      

      ..

      CSS

      .banner-item
      {
          position: absolute; 
      }
      

      【讨论】:

        【解决方案3】:

        在拨打.cycle() 之前,您可以执行以下操作:

        var images = $('.slideshow > img');
        images.get(0).removeClass("first");
        images.get(Math.floor(Math.random() * images.length)).addClass("first");
        

        【讨论】:

          【解决方案4】:

          省略 class='first' 位,然后运行此代码以随机化获得 class="first" 的图像

          $(function(){
             var rnd = Math.floor(Math.random() * $('.slideshow img').length);
          
             $('.slideshow img').eq(rnd).addClass("first");           
          });
          

          【讨论】:

            【解决方案5】:

            你试过了吗?我没有尝试运行它,但你明白了。

            <script type="text/javascript">
                $(document).ready(function () {
            
                    $('.slideshow img').get(random()*($('.slideshow img').length-1)).addClass('first');
                    $('.slideshow').cycle({
                    ....
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-04-28
              • 2013-04-13
              • 1970-01-01
              • 1970-01-01
              • 2012-12-05
              • 2015-09-03
              相关资源
              最近更新 更多