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