@mangust1785

.toggleClass не анимирует раскрытие и скрытие блока — что не так?

Немного нужна помощь. Стандартная разметка на товары

<div class="row show-more-height" id="text-more">
     <div class="col-md-3">товар</div>
     <div class="col-md-3">товар</div>
     <div class="col-md-3">товар</div>
     <div class="col-md-3">товар</div>
     ...
</div>
<div class="button-more">
<a class="show-more">показать все товары</a>
</div>


Код разворачивания и сворачивания

$(".show-more").click(function () {
    if($("#text-more").hasClass("show-more-height")) {
        $(this).text("скрыть товары");
    } else {
        $(this).text("показать все товары");
    }
    $("#text-more").toggleClass("show-more-height", 1000);
});


Разворачивает полностью весь блок с товарами и сворачивает, но без плавной анимации
Что не так в этом коде

ps сильно не ругайте, я в этом чайник
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
grantur5707
@grantur5707
Full Stack Web Developer
Вы неверно выбрали метод .toggleClass(), он не анимирует изменение высоты элемента.
Вы можете использовать .slideToggle() в совокупности с .toggleClass():

$(".show-more").click(function () {
    if($("#text-more").hasClass("expanded")) {
        $(this).text("показать все товары");
    } else {
        $(this).text("скрыть товары");
    }
    $("#text-more").slideToggle(1000).toggleClass("expanded");
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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