прелоадер на аккордион

309
22 февраля 2018, 15:52

Есть аккордион внутри которого есть 2 slick slider-а, который инициализируется в момент клика по аккордиону, что занимает определенное время, нужно поставить на время открытия аккордиона прелоадер, не могу разобраться как.

$( ".category-accordion-head" ).on('click', function(event) { 
 
			var $this = $(this), 
		      $parent = $this.closest('.category-accordion'), 
		      $otherContents = $parent.find('.category-accordion-content-wrapper'); 
 
		  	if( $this.hasClass('category-accordion-head-active') ) { 
		    	$otherContents.slideUp(function(){ 
		      		$this.removeClass('category-accordion-head-active');  
		    	}); 
		  	} else { 
		    	$('.category-accordion').not($parent) 
		      		.find(".category-accordion-head").removeClass('category-accordion-head-active') 
		      		.next().slideUp('slow'); 
 
		    	$parent 
		      		.find(".category-accordion-head") 
		        	.addClass('category-accordion-head-active') 
		        	.next().slideDown('slow'); 
		  	} 
				if($otherContents.css('display') === 'none') { 
		  		$("#preloader").show(); 
		  	} else { 
		  	 	$("#preloader").hide(); 
		  	} 
 
        /* слайдеры, можно опустить */ 
        if($otherContents.css('display') === 'block') { 
		  		$(this).parent('.category-accordion').find('.category-accordion--content-wrapper').each(function(){ 
					$(this).find('.category-accordion-content__slider_first').slick({ 
					  slidesToShow: 1, 
					  slidesToScroll: 1, 
					  arrows: false, 
					  fade: true, 
					  centerMode: true, 
					  centerPadding: '0px', 
					  asNavFor: $(this).find('.category-accordion-content__slider_second') 
					}); 
					$(this).find('.category-accordion-content__slider_second').slick({ 
					  slidesToShow: 3, 
					  slidesToScroll: 1, 
					  arrows: false, 
					  asNavFor: $(this).find('.category-accordion-content__slider_first'), 
					  focusOnSelect: true 
					}); 
				}); 
		  	} 
 
			});
.category-accordion-content-wrapper { 
  display: none; 
  border: 1px solid red; 
} 
.category-accordion-head-active { 
  color: red; 
} 
.preloader { 
  display: none; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class = "category-accordion"> 
  <h3 class="category-accordion-head toggle">Accordion</h3>  
  <div class = "category-accordion-content-wrapper"> 
   Accordion content 
   <div class ="category-accordion-content__slider_first"> 
    <div> 
      slide1 
    </div> 
    <div> 
      slide2 
    </div> 
    <div> 
      slide3 
    </div> 
   </div> 
   <div class ="category-accordion-content__slider_second"> 
    <div> 
      slide1 
    </div> 
    <div> 
      slide2 
    </div> 
    <div> 
      slide3 
    </div> 
   </div> 
</div> 
<div class="preloader">Preloader</div>

https://jsfiddle.net/7g5whedo/24/

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

READ ALSO
Метод возвращает новую высоту

Метод возвращает новую высоту

Создать объект, с полем высота и методом "увеличения на один", и возвращает новую высотуУ меня такой пример, но это неправильно, как сделать...

202
Помогите с рекурсией данной функции

Помогите с рекурсией данной функции

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

273
Выбор страницы из массива

Выбор страницы из массива

Есть массив страниц, в котором ключ является название рубрики, а значение ключа является список страниц в этой рубрикеP

270
Почему функции wordpress не работают в mail.php?

Почему функции wordpress не работают в mail.php?

Сайт на wordpressОтправка почты через ajax в таком виде работает:

252