Количество предметов в Bootstrap Карусель возвращает 0 - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь получить длину (общее количество) элементов в Bootstrap карусели. Однако мой код продолжает возвращать 0:

var totalItems = $('.carousel-item').length;

поездка данных объявлена ​​в родительском div:

<div id="carouselExampleIndicators" class="carousel slide carousel-fade my-4 " data-ride="carousel">

Когда я пытаюсь вызвать Карусель вручную с помощью:

$('.carousel').carousel()

, в консоли появляется исключение:

$ ('. Carousel'). Carousel ( ) не является функцией; не определено

Не уверен, что эти две проблемы связаны.

Элементы карусели помечены карусельным элементом класс:

 <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel"  src="images/fullpics/colesbay.jpg" alt="Image 2">
                        <div class="carousel-caption d-none d-md-block text-center">
                            <h5>Second slide label</h5>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                          </div>
                    </div>

Во всех примерах, которые я проверял в режиме онлайн, используется эта методология для подсчета количества предметов, поэтому я не уверен, в чем я ошибаюсь. Я также проверил этот ответ среди других, но не смог найти решение.

Полный код:

 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
   <!--V4 does not support glyphicons so use this CDN and pre-append fa fa to all glphicon glyphicon calls-->
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
   <!--Bootstrap JQuery and Popper.js and custom Bootstap JS-->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

Карусель Bootstrap:

<!--Main body - Botstrap Carousle-->
        <div class="col-lg-9">
            <div id="carouselExampleIndicators" class="carousel slide carousel-fade my-4 " data-ride="carousel">
                <ol class="carousel-indicators">
                <li data-target="#carouselExampleIndicators" data-slide-to="0"></li>
                <!--
                    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>-->
                    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
                <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>

                </ol>
                <!--Set the height of  div class to set height of all images as externa css imageCarsoule to stop jumping-->
                <div  class="carousel-inner" style="height: 400;"  role = "listbox">
                  <!--Remove class="carousel-item-active so we can randomly assign image with carousel.js
                    <div class="carousel-item-active">-->
                    <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel" src="images/fullpics/landscapes/Old Sheds Evandale (Acrylic).tiff" alt="First Mage">

                    </div>
                    <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel"  src="images/fullpics/colesbay.jpg" alt="Image 2">
                        <div class="carousel-caption d-none d-md-block text-center">
                            <h5>Second slide label</h5>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                          </div>
                    </div>
                    <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel" src="images/fullpics/landscapes/Sheoaks at Coles Bay (Acrylic & Coloured Pencil).tiff" alt="Image 2">
                        <div class="carousel-caption d-none d-md-block text-center">
                            <h5>third slide label</h5>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                          </div>
                    </div>
                    <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel"  src="images/fullpics/landscapes/Winter Drovers (Egg Tempera).jpg" alt="Image 2">
                        <div class="carousel-caption d-none d-md-block text-center">
                            <h5>Fourth slide label</h5>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                          </div>
                    </div>
                    <div class="carousel-item">
                        <img class="d-block w-100 img-fluid imageCarousel "src="images/fullpics//landscapes/Early Start (Oil).tiff" alt="Image 2">
                        <div class="carousel-caption d-none d-md-block text-center">
                            <h5>Fifth / Last slide label</h5>
                            <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                          </div>
                    </div>
                </div>
                <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
                    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                    <span class="sr-only">Previous</span>
                  </a>
                  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
                    <span class="carousel-control-next-icon" aria-hidden="true"></span>
                    <span class="sr-only">Next</span>
                  </a>
                </div>

Мой внешний JS файл:

$(document).ready(function() {
    $("#ccarouselExampleIndicators").carousel({
      interval: 1000,
      ride:true
    });
    console.log($(".carousel-item").length);
  });

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Функция карусели должна вызываться по идентификатору в вашем случае. Идентификатор карусели равен carouselExampleIndicators, поэтому вам нужно вызвать ее по

$('#carouselExampleIndicators').carousel()

Здесь является примером использования ваш шаблон. также вы вводите style="height: 400;", которое не является действительным css правилом

style="height: 400px;" (примечание: 400px не будет отображать метки)

и, наконец, есть первый слайд не помечен как активный, поэтому карусель не запустится. Используйте

<div class="carousel-item active">

на одном слайде

1 голос
/ 29 апреля 2020

Может быть это тема для библиотек, возьмите библиотеки с официальной bootstrap страницы

$(document).ready(function() {
  $("#carouselExampleSlidesOnly").carousel({
    interval: 1000,
    ride:true
  });
  console.log($(".carousel-item").length);
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<div id="carouselExampleSlidesOnly" class="carousel slide">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img class="d-block w-100" src="..." alt="First slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="..." alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="..." alt="Third slide">
    </div>
  </div>
</div>
...