bootd
@bootd
Гугли и ты откроешь врата знаний!

Как заново запустить slick слайдер после его уничтожения методом slick('unslick')?

Добрый день. Случилась у меня такая напасть. Мне нужно получить ajax'ом разметку и вставить её в слайдер.

Как у меня все работает:
Кликая на кнопку, появляется модальное окно, после срабатывания события полного открытия модального окна, я запускаю инициализацию слайдера, т.к. в скрытом блоке он не правильно считает ширину слайдов, что вообщем логично. Далее, после инициализации слайдере, по цепочке методов я вставляю в него полученную ajax'ом разметку и вставляю.

Далее, после полного закрытия окна, мне нужно уничтожить слайдер и очистить его от слайдов.

$.ajax({
		 	url: '/app/ajax/detail/index.php?user='+user+'&iblock='+iblock,
		 	type: 'GET',
		 	dataType: 'html',
		}).done(function(items){

			var clientThanksCarousel = $('#clientThanksCarousel');
			
			if(items){

				clientThanksModal
					.modal('show')
					.on('shown.bs.modal', function(){

						clientThanksCarousel
							.slick({
								slidesToShow: 2,
								responsive: [
									{
										breakpoint: 570,
										settings: {
											slidesToShow: 1
										}
									}
								]
							})
							.slick('slickAdd', items);

					})
					.on('hidden.bs.modal', function(){

						clientThanksCarousel
							.slick('unslick')
							.empty();

					});

			}
		
		});


Но вот не задача, если вызвать все это еще раз, что бы слайдер заново инициализировался и вставил новые слайды, он выдаёт мне ошибку. Uncaught TypeError: Cannot read property 'add' of null. Смотрел в консоли, что он делает с разметкой. Он её вычищает полностью. Но заново запуститься не хочет.

Прошу, помогите, уже голову сломал, что мне сделать!
  • Вопрос задан
  • 5082 просмотра
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08 Куратор тега JavaScript
Смотрел в консоли, что он делает с разметкой. Он её вычищает полностью.

Ну вот и ваша проблема. После clientThanksCarousel.slick('unslick').empty(); у вас удаляется сам элемент #clientThanksCarousel со страницы, либо вы его как-то еще удаляете. Так как при следующем обращении у вас ошибка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы