@aljo222
В процессе обучения веб-разработке

Как изменить события после первого клика?

Здравствуйте!
Как сделать так, чтобы по первому клику выполнился один цикл, а по последующим другой?
$(".products-toggle").click(function(e) {
        e.preventDefault();
       //первый цикл
        productsRow = $(this).parent().siblings('.products-row');        
         if(productsRow .hasClass("shown")) {
            productsRow .animate({"height": "50px"}).removeClass("shown");
         } else {
            productsRow .animate({"height": "auto"}).addClass("shown");
            animateHeight = productsRow .height();
         } 
        //после первого выполнять это    
         if(productsRow .hasClass("shown")) {
            productsRow .animate({"height": "50px"}).removeClass("shown");
         } else {
            productsRow .animate({"height": animateHeight }).addClass("shown");
         } 
    });


Почему мне это надо. Я хочу записать высотку блока products-row при height: auto. Просто если задавать фикс.высоту, то у блоков с небольшим количеством продуктов будет большое пустое место.
Если можно как-то поэлегантнее решить, скажите пожалуйста
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
@alekcena
Нелинейный наставник
Добавляете data атрибут к элементу.

Если ничего нет в нём - запуск 1 логики
Если есть запуск 2й
Ответ написан
Комментировать
Allegro75
@Allegro75
SummaryTables.ru - сайт с футбольной статистикой
Так а почему не ввести новую переменную?
Что-то в таком духе:
let isFirstClick = true;

$(".products-toggle").click(function(e) {

 if (isFirstClick) {
        e.preventDefault();
       //первый цикл
        productsRow = $(this).parent().siblings('.products-row');        
         if(productsRow .hasClass("shown")) {
            productsRow .animate({"height": "50px"}).removeClass("shown");
         } else {
            productsRow .animate({"height": "auto"}).addClass("shown");
            animateHeight = productsRow .height();
         } 

isFirstClick = false;
}

 else if (!(isFirstClick)) {

        //после первого выполнять это    
         if(productsRow .hasClass("shown")) {
            productsRow .animate({"height": "50px"}).removeClass("shown");
         } else {
            productsRow .animate({"height": animateHeight }).addClass("shown");
         } 

}

    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы