簡體   English   中英

Bootstrap js Carousel Caption問題

[英]Bootstrap js Carousel Caption issue

我有以下旋轉木馬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輪播中的問題:

我在旋轉木馬的第一張圖片上標題為“CAPTION 1”。 當我點擊最后一個指示符時,會顯示最后一個圖像,但顯示的標題是“CAPTION 2”。 =>修正了這一點。 所以沒問題

我在旋轉木馬的最后一張圖片上。 當我單擊第二個指示器而不是“CAPTION LAST”向右滾動時,在該單擊之后顯示“CAPTION 1”,並向右滾動,然后以錯誤的方向顯示“CAPTION 2”。 這只發生在返回時=>無法修復/控制此事件。 我添加了事件腳本:

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

但是引導腳本在此之后運行並覆蓋我的更改。

我努力了 :

 $('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輪播中觸發了哪個事件以及如何覆蓋它?

我能夠解決這個問題:

$(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;
      });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM