[英]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.