2016-01-25 4 views
0

Я создаю карусель с бутстрапом, и я бы хотел создать ссылку, которая прыгает прямо к последнему слайду в карусели (с n слайдами, а не фиксированным числом). Я попытался решить эту проблему, назначая класс active до последнего div в этом пути:Перейти к последнему слайду на карусели Bootstrap

$(".last").click(function(){ 
    $('myCarousel div').removeClass('active'); 
    $('myCarousel div:last-child').addClass('active'); 
}); 

Но это работает, если у меня есть только карусель на моей странице, но если карусели более чем одна ссылки перейдите к последнему слайду на всех каруселях. Как я могу решить проблему? Ниже приведен пример кода:

<div id="myCarousel1" class="carousel slide"> 
<div class="carousel-inner" role="listbox"> 
    <div class="item active slide"> 
    <img src="http://placehold.it/350x150"> 
    </div> 
    […] other items 
</div>  
</div> 
<ul> 
<a href="#myCarousel1" data-slide="prev"><li>Prev</li></a> 
<a href="#myCarousel1" data-slide="next"><li>Next</li></a> 
<a href="#myCarousel1"><li class="last">Last</li></a> 
</ul> 

<div id="myCarousel2" class="carousel slide"> 
<div class="carousel-inner" role="listbox"> 
    <div class="item active slide"> 
    <img src="http://placehold.it/350x150"> 
    </div> 
    […] other items 
</div>  
</div> 
<ul> 
<a href="#myCarousel2" data-slide="prev"><li>Prev</li></a> 
<a href="#myCarousel2" data-slide="next"><li>Next</li></a> 
<a href="#myCarousel2"><li class="last">Last</li></a> 
</ul> 

<script> 
$(document).ready(function(){ 
$(".last").click(function(){ 
    $('[id^="myCarousel"] div').removeClass("active"); 
    $('[id^="myCarousel"] div:last-child').addClass("active"); 
});  
}); 
</script> 

Спасибо!

+0

Почему не используйте селектор .parent ('. parent-class') для сужения контейнера Carousel, таким образом вы будете смотреть только на последний ребенок этого родителя, а не на все карусели на экране. –

ответ

0

Просто добавьте карусельный идентификатор к вашему селектору JQuery, как это:

$(".last").click(function(){ 
    $('#myCarousel1 div').removeClass('active'); 
    $('#myCarousel1 div:last-child').addClass('active'); 
}); 

Edit:

Если вы хотите, чтобы идентификатор вашей карусели быть динамичным, вы должны ссылаться на него где-нибудь. Вы можете поставить атрибут ссылки на последний слайд и прочитать этот атрибут при щелчке на ссылке, как это:

$('.last').click(function(e){ 
    var id = $(this).attr('data-id'); 
    $('#myCarousel' + id + ' div').removeClass('active'); 
    $('#myCarousel' + id + ' div:last-child').addClass('active'); 
}); 

И добавить данные идентификатор для вашей ссылки, как это:

<li class="last" data-id="2">Last</li> 
+0

Спасибо, но таким образом я должен повторить код для каждого слайда ... Есть ли более общий метод, который работает без повторения кода, что я могу использовать так же, как атрибут data-slide? – simba

+0

Это удаляет класс .active из всех div внутри # myCarousel1 и добавляет активный класс к последнему, .last - это класс кнопок ... Он будет работать с любым количеством слайдов – miguelmpn

+0

, вы также можете использовать '$ ('# myCarousel1 div'). length' вместо использования фиксированного индекса – miguelmpn

Смежные вопросы