Проблема с изменением html-кода кнопки при нажатии с помощью jquery

У меня есть кнопка в html:

<button class = "addbtn"><i class = "fas fa-plus-circle"></i></button>

Я хочу изменить html-код кнопки (значок) при нажатии. Новый HTML-код:

<button class = "addbtn"><i class = "fas fa-times-circle"></i></button>

И я хочу переключаться на другой значок каждый раз, когда я нажимаю на кнопку. Поэтому я использовал этот фрагмент кода:

$(document).ready(function(){
        $(".addbtn").click(function(){
            var flag = true ;
            if (flag){
                $(".addbtn").html("<button class='addbtn'><i class='fas fa-times-circle'></i></button>");
                $(".add").animate({height:'500'});
                flag = false ;
            } else {
                $(".addbtn").html("<button class='addbtn'><i class='fas fa-plus-circle'></i></button>");
                $(".add").height(60);
                    flag = true ;
                }
        });
    });

Но это не изменяет предыдущий класс html «addbtn», он добавит еще один класс «addbtn» в качестве дочернего элемента предыдущего класса.

Как я могу просто изменить текущий html-код, не добавляя новый класс?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы немного усложняете это. Вам просто нужно переключать соответствующие классы с помощью toggleClass(). Вам не нужно переписывать HTML-код элемента или использовать какие-либо глобальные флаги. Попробуй это:

$(".addbtn").click(function() {
  var $el = $(this).find('i').toggleClass('fa-plus-circle fa-times-circle');
  $(".add").animate({ 
    height: $el.hasClass('fa-times-circle') ? 500 : 60
  });
});

Другие вопросы по теме