繁体   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