zorro76
@zorro76

Не подгружается контент(slider slick) в аккордеоне Bootstrap, как это побороть?

Задавался этим вопросом на ru.stackoverflow.com, ответа который бы помог ситуации не получил, а суть вопроса в следующем: есть проект(верстается), на странице Продукция аккордеон на Bootstrap, кликаем по вкладке Цифровые технологии, открывается контент 345c30a8b1e845f180dedb30d00443fc.png (так должно выглядеть), а вот так 8319f53c6f7f4d8192835a0a20c092cd.png выглядит, дальше еще хуже, при клике по кнопке Подробнее должен показаться скрытый контент в т.ч элементы слайдера (Slick), но загружается не все: 529cc89bdb4d496fb793a117042ac86a.png (то что отобразилось). От слайдера видны только стрелки (там два слайдера) и вот когда уже кликнуть по стрелкам слайдера, то отобразиться и сам слайдер b2ae47746e184510b4415dbf32e7baa1.png.
На самом деле все это плохо, ибо как только перегрузится страница, все надо начинать сначала. Порывшись в сети, нашел вот такое, что когда блок скрыт через display:none у JS есть проблемы с определением занимаемого им пространства. Потому как он реально не занимает никакого пространства на странице. У меня нужные блоки скрыты через display: none. Как решить эту проблему? Кто в теме помогите?
П.С. На кнопке висит вот такой код:
<a href="#" class="btn-back" onclick="$('div.hide-info1').toggle('normal'); this.text = this.text == 'Свернуть' ? 'Подробнее' : 'Свернуть'; return false">Подробнее<i class="fa fa-angle-right"></i> </a>

код слайдера стандартный:
$('.mini-portfolio-item-slider').on('init', function(event, slick, currentSlide){
        var nrCurrentSlide = slick.currentSlide + 1,
            totalSlidesPerPage = nrCurrentSlide + 3;
        $('.controls').html(nrCurrentSlide + " - " + totalSlidesPerPage + " of " + slick.slideCount);
    });

    $('.mini-portfolio-thumb-slider').slick({
        slidesToShow: 3,
        slidesToScroll: 1,
        asNavFor: '.mini-portfolio-item-slider',
        dots: false,
        arrows: true,
        focusOnSelect: true,
        infinite: false
    });

    $('.mini-portfolio-item-slider').slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        arrows: false,
        asNavFor: '.mini-portfolio-thumb-slider',
        infinite: false
    });

После форматирования кода (который посоветовали ниже) ситуация изменилась, но не кардинально, теперь страница грузится вот так0dc3acf03edd4c2c97b989432ab1c6f7.png, при нажатии на кнопку Подробнее, открывается нормально слайдер, контент. Но когда нажать вторично на кнопку Свернуть, скрывается только часть слайдера, но контент нет. И все кнопка больше не отрабатывает ничего.
  • Вопрос задан
  • 1744 просмотра
Пригласить эксперта
Ответы на вопрос 2
@MNB
Код кнопки
<a href="#" class="btn-back" id="myBtn">Подробнее<i class="fa fa-angle-right"></i> </a>


jabascript
$(document).on('click', '#myBtn', function(e){
   e.preventDefault();
  $('div.hide-info1').toggle('normal', function(){

      // код слайдера

  });
  this.text = this.text == 'Свернуть' ? 'Подробнее' : 'Свернуть';
});
Ответ написан
thewind
@thewind
php программист, front / backend developer
Инициализируйте слайдер в открываемом блоке только после открытия (смотрите события аккордеона)
Ответ написан
Ваш ответ на вопрос

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

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