Дополняя @TheLittlePig, он должен немного отличаться, если вы используете Bootstrap 3, потому что событие, к которому прикрепляется обратный вызов, отличается: slid.bs.carousel
. Кроме того, если у вас есть несколько каруселей на одной странице, вам необходимо передать уникальный идентификатор css для карусели в обработчик событий. Вот модифицированная версия, которую я использую на своем сайте Rails:
<script>
//<![CDATA]
id = '#carousel-<%=id%>';
$(id).on('slid.bs.carousel', { id: id }, bs_carousel_slid);
$(document).ready(function(){ $(id).trigger('slid.bs.carousel'); });
//]]>
</script>
Это повторяется для каждой карусели. <%=id%>
— это рубиновое выражение, которое заменяется уникальным идентификатором данной карусели. Настройте этот бит для своих нужд в соответствии с языком по вашему выбору.
Разница в том, что идентификатор карусели передается в функцию обработчика событий как данные события, чтобы обработчик событий мог работать с правильной каруселью. Я также изменил событие ready
, чтобы оно запускало событие slid.bs.carousel
(вместо прямого вызова функции), чтобы оно передавало правильные данные события в обработчик событий для каждой карусели.
Обработчик событий — это функция с именем bs_carousel_slid
, которую я определяю в другом месте (в Rails — в файле в app/assets/javascripts
). Функция показана ниже:
function bs_carousel_slid(event)
{
var id = event.data.id;
var $this = $(id);
if($(id + ' .carousel-inner .item:first').hasClass('active')) {
$this.children('.left.carousel-control').hide();
} else if($(id + ' .carousel-inner .item:last').hasClass('active')) {
$this.children('.right.carousel-control').hide();
} else {
$this.children('.carousel-control').show();
}
}
person
starfry
schedule
08.05.2014