Как запустить слайдер bootstrap вручную?
Возникла проблема, где не ждали. http://classtoys.ru/
Если нажать на любую карточку, подробное описание откроется под карточкой. Там несколько изображений, которые lолжны по идее автоматически прокручиваться. Использован стандартный слайдер bootstrap. Почему не работает, понятно. В bootstrap.js есть код: $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) который запускается при загрузке страницы. А у нас при загрузке карусели нет, она формируется на лету. Я вставила вот такой код в кусок своего скрипта: $('.toy-list-toy-wrapper a.item').on('click', function(e) { e.preventDefault(); $('.expander').remove(); var url = $(this).data('path'); var toyId = $(this).data('toy'); var toyRate = $(this).data('rate'); var parent = 0; var currentIndex = 0; var afterIndex = 0; parent = $(this).closest('div.toy-list-toy-wrapper'); currentIndex = $('div.toy-list-toy-wrapper').index(parent); afterIndex = Math.ceil((currentIndex+1)/quantityAfterAdd)*quantityAfterAdd; $.post( url, { toy: toyId, toyRate: toyRate, currentIndex: currentIndex }, function(data) { var realIndex = afterIndex-1; if ($('div.toy-list-toy-wrapper').eq(realIndex).length == 0) { while ($('div.toy-list-toy-wrapper').eq(realIndex).length == 0) { realIndex = realIndex - 1; } } $('div.toy-list-toy-wrapper').eq(realIndex).after(data); $('html, body').animate({ scrollTop: $(".expander").offset().top - 20 }, 2000); } ); $('[data-ride="carousel"]').each(function () { $(this).carousel() }) }); последние строчки, сначала заводится .expander, потом, если в нем есть data-ride="carousel" - запускается слайдер. Работает только в хроме. Никак не пойму, почему. Что я делаю не так? |
adt,
Карусель нужно инициализировать после создания контента на странице, а не сразу после отправки асинхронного запроса. Строки 39-41 нужно вставить после строки 36. |
Это гениально!
Спасибо! Все заработало!
|
Часовой пояс GMT +3, время: 06:58. |