Как заменить элементы внутри div на клик с помощью запроса?

0

У меня есть два отдельных класса div, называемых demo-heart и demo-coal. Функциональность, которую я пытаюсь включить: когда пользователь нажимает на значок fa-heart, он превращается в fa-coal. Когда пользователь нажимает на fa-уголь, он превращается в фа-сердце.

<div class = "demo-heart">
    <a href = "#" onclick="myFunction()">
        <i class="fa fa-heart fa-3x"></i>
    </a>
</div>

<div class = "demo-coal">
    <a href = "#" onclick="myFunction()">
        <i class="fa fa-coal fa-3x"></i>
    </a>
</div>  

Это то, что я до сих пор знаю, и это, похоже, не работает. Но я также хочу, чтобы он мог вернуться к исходному фа-сердцу, когда пользователь нажимает на него. Какие-либо предложения?

<script>
    function myFunction(){
        $(".demo-heart").html("<a href = '#'><i class='fa fa-coal fa-3x'></i></a>");
    }
 </script>
  • 0
    Вместо того, чтобы заменять содержимое (каждого) элемента div , просто переключите класс элемента and i .
Теги:

2 ответа

3
Лучший ответ

Удалите встроенный обработчик onclick, затем используйте jQuery .click(), чтобы зарегистрировать обработчик кликов

jQuery(function(){
    $('.fa').click(function(){
        $(this).toggleClass('fa-heart fa-coal')
    })
})

Демо: скрипка

  • 0
    @TusharGupta да опечатка ... исправлено
  • 0
    +1 для быстрого исправления.
1

Более простое решение состоит в том, чтобы иметь одну структуру HTML и переключать класс внутри нее:

<div class="demo-heart">
    <a href="#">
        <i class="fa fa-heart fa-3x"></i>
    </a>
</div>
$('.demo-heart a').click(function(e) {
    e.preventDefault();
    $('i', this).toggleClass('fa-heart fa-coal');
});

Обратите внимание, что я удалил атрибут onClick в пользу более чистого обработчика событий jQuery.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню