Есть аккордион внутри которого есть 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/
К сожалению не получилось тут вызвать слайдер , но на реальном проекте грузится довольно долго как для аккордиона. Как правильно вызвать прелоадер на время открытия аккордиона и убрать после закрытия?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости