Qurel
@Qurel

Как правильно обратиться к элементу по дом-дереву?

Есть 2 блока. В первом блоке есть иконка, класс которой нужно менять. Во втором блоке есть 2 кнопки:
1. Добавить комментарий
2. Удалить комментарий

Эти 2 блока выводятся циклом на страницу

Как правильно обратиться к иконке по дом-дереву (менять класс) при клике на кнопку?

<span class="js-notepad-show-ads b-notepad__feedback-letter_title">
    <i class="b-notepad__feedback-letter_title_icon fa fa-plus"></i>
    Добавить комментарий
</span>
<div style="display: none" class="b-notepad__feedback-letter_block text_center" data-id="{$item.id}">
    <textarea class="b-notepad__feedback-letter_block_textarea">{$item.comment}</textarea>
    <button type="button" class="button button__blue js-received-comment" data-action="save">{'received.Сохранить'|t} 
    </button>
    <button type="button" class="button button__red js-received-comment" data-action="remove">{'received.Удалить'|t} 
    </button>
</div>


Этот код не работает:
$('.js-received-comment').click(function () {
        var commentIcon = $(this).parent().prev().find('.b-notepad__feedback-letter_title_icon');
        console.log(commentIcon);
        var commentText = $(this).prev().$('.b-notepad__feedback-letter_block_textarea');

        if($(commentText).val() == '') {
            $(commentIcon).removeClass('fa-exclamation').addClass('fa-plus');
        } else {
            $(commentIcon).removeClass('fa-plus').addClass('fa-exclamation');
        }
    });
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Firsov36
full-stack web developer
$(“.js-recieved-comment”).on(“click”, function() {
   If($(this).attr(“data-action”) == “save”) {
       $(“.b-notepad__feedback-letter_title_icon”).removeClass('fa-exclamation').addClass('fa-plus');
    } else if ($(this).attr(“data-action”) == “remove”) {
        $(“.b-notepad__feedback-letter_title_icon”).removeClass('fa-plus').addClass('fa-exclamation');
    }
});


Писал с айпада, не проверял, но должно работать, если где опечатки нет
Ответ написан
Ваш ответ на вопрос

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

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