如何在页面加载后使Bootstrap js轮播自动循环?

时间:2012-03-17 14:36:19

标签: javascript twitter-bootstrap carousel

使用bootstrap.js版本2.02

我试图让Twitter Bootstrap Carousel在有人访问我的网站时自动循环。现在,只有在您单击其中一个循环按钮至少一次后,自动循环才会起作用。

我希望旋转木马能够立即开始骑行。

有谁知道怎么做?

我的网站是hotairraccoon.com

你会看到在点击轮播一次之后,它开始每5秒左右循环一次,但我不希望点击需要显示轮播内容。

谢谢!

15 个答案:

答案 0 :(得分:44)

注意:正如评论中所提到的,此解决方案将适用于Bootstrap 2.请参阅MattZ的答案,了解如何在Bootstrap 3上完成相同的行为。

我遇到了和你一样的问题,而且我必须做的就是在初始化旋转木马后调用旋转木马('循环')方法:

<script type="text/javascript">
$(document).ready(function () {
    $('.carousel').carousel({
        interval: 3000
    });

    $('.carousel').carousel('cycle');
});
</script>  

我意识到这个问题已经过时了,但我今晚正在谷歌搜索试图弄清楚自己,并看到没有人正确回答它。最高投票回答不会自动启动轮播,它只会在按下一个按钮时循环,这不是OP所寻找的。

答案 1 :(得分:42)

在Bootstrap 3.0中,可以通过向轮播容器添加“data-ride”属性来实现:

<div id="my-carousel" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
        ...
    </div>
</div>

https://github.com/twbs/bootstrap/blob/v3.0.0/js/carousel.js#L210

答案 2 :(得分:9)

$('.carousel').carousel({
  interval: 2000
})

答案 3 :(得分:4)

jquery.js文件必须在bootstrap.js之前加载,无论它们是放在head标签中还是放在文件末尾。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.js"type="text/javascript"></script>

答案 4 :(得分:3)

在Bootstrap 3.0中,可以通过向轮播容器添加“data-ride”属性来实现:

             ...

答案 5 :(得分:2)

尝试像这样初始化您的轮播:

$('.carousel').carousel().next();

答案 6 :(得分:2)

如果这些解决方案都不适合您。 试试这个:

$(document).ready(function () {
  function playcarousel(){
    $('.carousel-control.right').trigger('click');
  } 
  window.setInterval(playcarousel, 4000); 
});

答案 7 :(得分:1)

快速而肮脏的解决方案是以编程方式单击文档准备就绪按钮:

$(function() {
  $(".right.carousel-control").click();
});

顺便说一句:确保你在引用$的其他脚本之前加载jQuery,现在你有两个Uncaught ReferenceError: $ is not defined,因为你在第101行和第182行调用了$,但jquery首先在第243行加载。

我建议使用像firebug或开发工具(chrome / safari)这样的工具来捕获这些错误。

编辑:我认为你已经有了一个可行的解决方案,但是因为你在加载之前使用了jquery它不起作用。

答案 8 :(得分:1)

不确定你是否解决了这个问题,但我也遇到了这个问题。我通过在这样的函数中包装轮播间隔设置来解决它:

!function ($) {
$(function() {
    $('.carousel').carousel({ interval: 3000 })
});
}(window.jQuery);

答案 9 :(得分:1)

还有一种方法可以自动循环自举转盘。

使用 data-ride="carousel" 属性。它告诉引导程序在页面加载时立即开始动画旋转木马。

答案 10 :(得分:0)

根据Jesse Carter对这个问题的回答,这是对我有用的解决方案。我不知道为什么会这样,但由于某种原因,它需要2个调用,一个在文档内准备好,另一个在外面。如果我删除其中任何一个,那么出现问题,例如暂停功能无法正常工作,或自动循环。除此之外,间隔似乎只在doc.ready内部起作用。来自javascript头的评论最受欢迎;-)但我怀疑这个领域的T.B.并非完全无bug!我正在使用2.0.2,我知道它有点落后(当前版本现在是2.0.4)但是我没有看到这个区域有任何变化

jQuery(document).ready(function () {
    jQuery('#myCarousel').carousel(
    {
    interval:2000
    });
});

jQuery('#myCarousel').carousel();

答案 11 :(得分:0)

解决此问题的正确方法是在创建轮播时将“活动”类添加到轮播中的第一个图像。这将使旋转木马尽快开始骑车。

以下是一个例子:

    <div class="carousel slide">
      <div class="carousel-inner">
        <div class="item active"></div>
        <div class="item"></div>
        <div class="item"></div>
      </div>
    </div>

答案 12 :(得分:0)

虽然这里的答案无疑是正确的,但我只想补充说,您可以通过在代码中添加错误来重现海报所描述的确切行为。例如,删除分号或结尾脚本标签,轮播将不再自动播放。

所以你要做的第一件事就是在你的javascript控制台中查找错误!

答案 13 :(得分:0)

试试这个。

$(document).ready(function ()
{
    $('.carousel').carousel({interval:5000,pause:false});
});

答案 14 :(得分:0)

    <div id="myCarousel" class="carousel slide">
            <!-- Indicators -->
            <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>
            <!-- Wrapper for slides -->
            <div class="carousel-inner">
              <div class="item active">
               <img src="img1" class="img-responsive" alt="stuff1" > 
              </div>
              <div class="item">
               <img src="img2" class="img-responsive" alt="stuff2" > 
              </div>
            </div>
           <!-- Controls-->
      <a class="left carousel-control" href="#myCarousel" data-slide="prev">
        <span class="icon-prev"></span>
      </a>
      <a class="right carousel-control" href="#myCarousel" data-slide="next">
        <span class="icon-next"></span>
      </a> 
          </div>

 <!--This script should be at the very bottom of the page (footer works for me)-->  
    <script>
    $('#myCarousel').carousel
    ({
        interval: 2000,


        })

    </script>