第一张幻灯片转盘问题

时间:2017-06-19 19:04:14

标签: javascript jquery twitter-bootstrap

我的网站上有一个bootstrap轮播 这是缩短的HTML:

<div id="myCarousel" class="hp-top carousel fade" data-ride="carousel" data-interval="6000">
  <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
  </ol>
  <div class="carousel-inner">
    <div id="first-slide" class="item active">

      <img src="" alt="Chicago" />
      <div class="carousel-caption">
        <div class="carousel-caption-inner">
          <p class="slider-text small"><span class="slider-padding">What makes</span> us <span class="slider-green">specialists?</span></p>
        </div>
      </div>
    </div>
    <div class="item">

      <img src="" alt="Chicago" />
      <div class="carousel-caption">
        <div class="carousel-caption-inner">
          <p class="slider-text small"><span class="slider-padding">What makes</span> us <span class="slider-green">distinctive?</span></p>
        </div>
      </div>
    </div>
  </div>

我创建了一个功能,可以在幻灯片移动后的几秒内滑动文本 这是代码:

<script type="text/javascript">
var carouselContainer = jQuery('.carousel');
var slideInterval = 6000;

jQuery( document ).ready(function() {
  if (jQuery(window).width() > 480) {
    function toggleCaption() {
      jQuery('.carousel-caption').hide();
      var caption = carouselContainer.find('.active').find('.carousel-caption');
      caption.delay(1000).toggle("slide", {direction:'right'});
    }

    jQuery('#myCarousel').bind('slide.bs.carousel', function() {
      jQuery('.carousel-caption').hide();
    });

    carouselContainer.on('slid.bs.carousel', function() {
      toggleCaption();
    });
  }
});
</script>

现在一切正常,但是当你第一次加载页面时,最后一个横幅会在第一个横幅显示之前显示一秒钟。
我想知道这是否与我上面的功能有关 可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

看起来您已经在doc ready中的条件内定义了一个函数。不要这样做。将它移到doc准备范围之外,如下所示:

<script type="text/javascript">
    var carouselContainer = jQuery('.carousel');
    var slideInterval = 6000;            

    jQuery(document).ready(function () {
        if (jQuery(window).width() > 480) {                    

            toggleCaption(); //replace function definition with call to function instead

            jQuery('#myCarousel').bind('slide.bs.carousel', function () {
                jQuery('.carousel-caption').hide();
            });

            carouselContainer.on('slid.bs.carousel', function () {
                toggleCaption();
            });
        }
    });

    //MOVED function outside of document.ready:
    function toggleCaption() {
        jQuery('.carousel-caption').hide();
        var caption = carouselContainer.find('.active').find('.carousel-caption');
        caption.delay(1000).toggle("slide", { direction: 'right' });
    }
</script>