Бутстрап js Карусель Подпись

У меня есть следующий карусель html:

<div class="carousel-wrap">
   <div class="carousel carousel-images" data-ride="carousel">
      <div class="carousel-inner" role="listbox">
         <div class="obj active"><img src="https://test.myserver.com/1.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/2.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/3.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/4.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/5.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/6.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/7.jpg"></div>
         <div class="obj"><img src="https://test.myserver.com/8.jpg"></div>
      </div>
   </div>
   <div class="carousel slide carousel-captions" data-ride="carousel" data-interval="false" data-wrap="true">
      <div class="carousel-inner" role="listbox">
         <div class="obj active">
            <div class="para">CAPTION 1</div>
         </div>
         <div class="obj">
            <div class="para">CAPTION 2</div>
         </div>
         <div class="obj">
            <div class="para">CAPTION 3</div>
         </div>
         <div class="obj">
            <div class="para"></div>
         </div>
         <div class="obj">
            <div class="para"></div>
         </div>
         <div class="obj">
            <div class="para"></div>
         </div>
         <div class="obj">
            <div class="para">CAPTION SECOND LAST</div>
         </div>
         <div class="obj">
            <div class="para">CAPTION LAST</div>
         </div>
      </div>
   </div>
   <div class="carousel-indicators-wrapper">
      <ol class="carousel-indicators">
         <li class="active"></li>
         <li class=""></li>
         <li class=""></li>
         <li class=""></li>
         <li class=""></li>
         <li class=""></li>
         <li class=""></li>
         <li class=""></li>
      </ol>
   </div>
</div>

Теперь,

Проблемы в карусели bootstrap.js:

Я нахожусь на 1-м изображении карусели с надписью «CAPTION 1». Когда я нажимаю последний индикатор, отображается последнее изображение, но отображается надпись «CAPTION 2». => Исправлено. Так что никаких проблем

Я нахожусь на последнем изображении Карусели. Когда я нажимаю 2-й индикатор, вместо «CAPTION LAST», прокручивающегося вправо, после этого щелчка отображается «CAPTION 1» и прокручивается вправо, а затем отображается «CAPTION 2» и в WRONG DIRECTION. Это происходит только при возврате => Невозможно исправить / контролировать это событие. Я добавил скрипт для события:

$('div.carousel')('slide.bs.carousel', function (event) {
   event.preventDefault();
   ..............
 })

Но скрипт bootstrap запускается после этого и переопределяет мои изменения.

Я пытался :

 $('div.carousel-indicators-wrapper ol li').click(function(event){
          event.preventDefault();
          index = $( "div.carousel-indicators-wrapper ol li" ).index( this);
          console.log('From : ' + prev_index + '===> To : ' + index);
          prev_index = index;
          var current_index = index+1;

        /*  $('div.carousel-indicators-wrapper ol li').each(function( loop_index ) {
                console.log( index );
                var il = loop_index+1;
                if(index == loop_index) {
                   $(this).addClass('active');
                   $('div.carousel.carousel-images div.item:nth-child(' + il + ')').addClass('active');
                   $('div.carousel.carousel-captions div.item:nth-child(' + il + ')').addClass('active');
                } else {
                   $(this).removeClass('active');
                   $('div.carousel.carousel-images div.item:nth-child(' + il + ')').removeClass('active');
                   $('div.carousel.carousel-captions div.item:nth-child(' + il + ')').removeClass('active');
                }

          }); */

          $('div.carousel.carousel-images div.item').removeClass('active');
          $('div.carousel.carousel-captions div.item').removeClass('active');
          $('div.carousel-indicators-wrapper ol li').removeClass('active');

          $('div.carousel.carousel-images div.item:nth-child(' + current_index + ')').addClass('active');
          $('div.carousel.carousel-captions div.item:nth-child(' + current_index + ')').addClass('active');
          $('div.carousel-indicators-wrapper ol li:nth-child(' + current_index + ')').addClass('active');

          if(index < prev_index) {
             $('div.carousel.carousel-images div.item:nth-child(' + current_index + ')').addClass('right');
             $('div.carousel.carousel-captions div.item:nth-child(' + current_index + ')').addClass('right');
          } else if(index > prev_index) {
             $('div.carousel.carousel-images div.item:nth-child(' + current_index + ')').addClass('left');
             $('div.carousel.carousel-captions div.item:nth-child(' + current_index + ')').addClass('left');
          }

     });

а также

В строке botstrap.js 376 добавлены предупреждения для всех определений функций,

Carousel.prototype.to = function (pos) {
    alert('prototype.to');
    .......
  }

Carousel.prototype.slide = function (pos) {
    alert('prototype.slide');
    .......
  }

предупреждение ( 'prototype.to'); был назван первым. Но после нажатия индикатора и получения предупреждения «prototype.to», «CAPTION 1» был отмечен как активный. Который затем прокручивается, а не «Caption Last»

Какое событие запускается в карусели bootstrap.js при нажатии на индикатор и как его переопределить?

javascript,jquery,twitter-bootstrap,carousel,

1

Ответов: 1


0

Я смог решить проблему:

$(document).ready(function() {

     var index = 0;
     var prev = 0;
     var indicator_click = false;
     $('div.carousel-indicators-wrapper ol.carousel-indicators li').click(function(event){
        index = $(this).index();
        indicator_click = true;
     });

     $('div.carousel').bind('slide.bs.carousel', function (e) {

        if(indicator_click) {
          $('div.carousel-captions div.item').removeClass('active');
          if(index < prev){
           $('div.carousel-captions div.item:eq(' + prev + ')').addClass('right');
           $('div.carousel-captions div.item:eq(' + prev + ')').addClass('active');
           $('div.carousel-captions div.item:eq(' + index + ')').addClass('left');
          } else {
           var i = index;
           var count = $('div.carousel-captions div.carousel-inner').children().length;
           if(index < 0) {
               i = count -1;
           } else {
               i = index - 1;
           }
           $('div.carousel-captions div.carousel-inner div.item:eq(' + i + ')').addClass('active');
          }
        }

     });

      $('div.carousel').bind('slid.bs.carousel', function (e) {
           $('div.carousel-captions div.item').removeClass('left');
           $('div.carousel-captions div.item').removeClass('right');
           prev = index;
           indicator_click = false;
      });
});
JavaScript, JQuery, твиттер-самозагрузка, карусель,
Похожие вопросы