@kerptwotwo

Почему не срабатывает js код через this?

Мне нужно спрятать "promocode-more", если нет текста в "promocode-more__text", классы повторяются, поэтому мне нужно обратиться к конкретному "promocode-more", что у меня не получается, пробовал по разному. Можете подсказать, в чём ошибка?

<div class="promocodes-text">
            <div>
                <p class="promocode-text__title">
                    <span>-150 рублей</span> на весь ассортимент
                    <br>по промокоду.
                </p>
                <p class="promocode-text__description">
                    Скидка
                    <span class="promocode-more">
                        ...
                    </span>
                    <!-- В promocode-more__text писать текст, который будет прятаться на мобильном -->
                    <span class="promocode-more__text">
                        Приобретите на сумму от 3500р. c приятной скидкой. 
                    </span>
                </p>
            </div>
        </div>

$(document).ready(function () {

        $(".promocode-text__description").ready(function () {
            var that = '';
            if ($(".promocode-text__description").children(".promocode-more__text").is(':empty')) {
                that = 1;
            } else {
                console.log('Не пустой');
            }
            if (that == 1) {
                console.log('Работает');
                $(this).children(".promocode-more").addClass("hides");
            }
        });

        $(".promocode-text__description").click(function () {
            if ($(window).width() < 575) {
                $(this).children(".promocode-more__text").toggleClass("expand");
                $(this).children(".promocode-more").toggleClass("hides");
            }
        });
    });
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
$('.promocodes-text').each(function(){
  const $desc = $('.promocode-text__description', this);
  const $text = $('.promocode-more__text', this);
  const $more = $('.promocode-more', this);
  
  if ($text.is(':empty')) {
    $more.addClass("hides");
  }

  $desc.click(function () {
    if ($(window).width() < 575) {
      $text.toggleClass("expand");
      $more.toggleClass("hides");
    }
  });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
02 июн. 2024, в 15:18
1 руб./за проект
02 июн. 2024, в 15:14
500 руб./за проект
02 июн. 2024, в 15:10
5000 руб./за проект