【问题标题】:Bootstrap carousel interval inside JQuery $(document).ready() isn't workingJQuery $(document).ready() 内的引导轮播间隔不起作用
【发布时间】:2019-12-11 07:21:11
【问题描述】:

我正在学习引导轮播。但是当我将页面加载到 Firefox 72 / chromium / falkon 时,间隔在 $( document ).ready(...)$(() = {...}) 内不起作用,但没有它们也能成功。

代码

<!Doctype HTML>

<html>
    <head>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Carousels</title>

        <script src="js/jquery-3.4.1.min.js"></script>
        <script src="bootstrap-3.3.4-dist/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="bootstrap-3.3.4-dist/css/bootstrap.min.css">
    </head>

    <body>
        <div class="container-fluid">
            <div class="carousel slide" id="myCarousel" data-ride="carousel">
                <ol class="carousel-indicators">
                    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
                    <li data-target="#myCarousel" data-slide-to="1"></li>
                    <li data-target="#myCarousel" data-slide-to="2"></li>
                </ol>

                <div class="carousel-inner">
                    <div class="item active">
                        <img src="images/a.jpg"/>
                        <div class="carousel-caption">First Slide</div>
                    </div>

                    <div class="item">
                        <img src="images/b.jpg"/>
                        <div class="carousel-caption">Second Slide</div>
                    </div>

                    <div class="item">
                        <img src="images/a.jpg"/>
                        <div class="carousel-caption">Third Slide</div>
                    </div>
                </div>

                <a class="left carousel-control" href="#myCarousel" data-slide="prev">
                    <span class="glyphicon glyphicon-chevron-left"></span>
                    <span class="sr-only">Previous</span>
                </a>

                <a class="right carousel-control" href="#myCarousel" data-slide="next">
                    <span class="glyphicon glyphicon-chevron-right"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
        </div>

        <script>
            $( document ).ready(() => {
                // works
                window.console.log('hi')

                // Doesn't work
                $('.carousel').carousel({
                    interval: 100
                })
            })
        </script>
    </body>
</html>

此代码有 2 个图像,分别称为 a.jpgb.jpg,它们显示正确。但是,如果我将 $(document).ready() 注释掉,则代码可以正常工作(从一个图像更改为另一个图像而无需滑动),尽管我的讲师的代码在 $() JQuery 函数中工作正常!

为什么滑动间隔在 JQuery 中不起作用?

【问题讨论】:

  • 你可以试试$(document).on('your_action', 'your_id_or_class', function() {"your code goes here"})
  • 如果我使用$( document ).on('mouseover', '#myCarousel', () =&gt; {...} 进行测试,在重新加载页面后,它有时会在鼠标悬停时激活,有时不会,widow.console.log('hi') 工作正常...
  • 你把它放在document.ready函数之外
  • 它在 document.ready 之外工作,但我的导师显示它应该在 document.ready() 中!教练有 10000 毫秒的延迟,但它没有经过很好的测试......我使用 100 毫秒的延迟只是为了测试它是否有效,但由于某种原因它不起作用!
  • @S.Goswami,我已经更新了你的代码。请检查并告诉我。

标签: jquery twitter-bootstrap-3 bootstrap-carousel


【解决方案1】:

这里是代码。希望它对你有用。如果有任何变化,请告诉我。只需将 slide 类添加到轮播中。滑动效果很好,间隔也很好。

<!Doctype HTML>

<html>
    <head>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Carousels</title>

        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    </head>

    <body>
        <div class="container-fluid">
            <div class="carousel slide" id="myCarousel" data-ride="carousel">
                <ol class="carousel-indicators">
                    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
                    <li data-target="#myCarousel" data-slide-to="1"></li>
                    <li data-target="#myCarousel" data-slide-to="2"></li>
                </ol>

                <div class="carousel-inner">
                    <div class="item active">
                        <img src="https://dummyimage.com/600x400/000/fff"/>
                        <div class="carousel-caption">First Slide</div>
                    </div>

                    <div class="item">
                        <img src="https://dummyimage.com/600x400/ff00ff/fff"/>
                        <div class="carousel-caption">Second Slide</div>
                    </div>

                    <div class="item">
                        <img src="https://dummyimage.com/600x400/0033ff/fff"/>
                        <div class="carousel-caption">Third Slide</div>
                    </div>
                </div>

                <a class="left carousel-control" href="#myCarousel" data-slide="prev">
                    <span class="glyphicon glyphicon-chevron-left"></span>
                    <span class="sr-only">Previous</span>
                </a>

                <a class="right carousel-control" href="#myCarousel" data-slide="next">
                    <span class="glyphicon glyphicon-chevron-right"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
        </div>

      <!-- jQuery library -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

  <!-- Latest compiled JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
        <script>
           
                // It will work
                $('.carousel').carousel({
                    interval: 5000
                });
           
        </script>
    </body>
</html>

【讨论】:

  • IDK 为什么将 5000 毫秒延迟更改为 500 或 50 之类的其他值时,它不起作用(尝试过 chromium 79 和 firefox 72),但同样,当您删除 $( document ).ready(...) 和只需使用ready()中的裸代码
  • @S.Goswami 您的具体问题是什么?行不行?
  • 不,间隔不起作用,滑动动画也不起作用(它应该有动画)。可能它太过时并且损坏了?此外,新的 bootstrap 4 非常向后不兼容,而且很难按照我正在观看的教程进行操作!...有什么想法吗?
  • 等等。给我一些时间。我会尽快检查并更新您。
  • @S.Goswami,其实你用的是 bootstrap 3. 0。那你怎么说 bootstrap 4?
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 2015-09-12
相关资源
最近更新 更多