Заменить между 2 div несколько раз

Я хочу заменить 2 div несколько раз, но когда я заменяю его 1 раз и снова нажимаю кнопку, он показывает их оба.

Я пытаюсь описать это: когда я нажимаю кнопку «Нравится», он переключается на «Нравится» и «Счетчик» (также работает ajax), но когда я нажимаю кнопку «Не нравится» после этого, кнопка не заменяет ее, просто показывает мне оба их.

Код:

JS:

 <script>
    function likethis(likeid)
    {
        $('#dealid-' + likeid).html(function(i, val) {
        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
            },
            type:"get",
            url: 'deal/like/'+ likeid,
        });
        return +val+1;
        });
        $('#like-' + likeid).replaceWith($('#unlike-' + likeid).html());
    }
</script>


<script>
    function unlikethis(likeid)
    {
        $('#dealid-' + likeid).html(function(i, val) {
            $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
                },
                type:"get",
                url: 'deal/like/'+ likeid,
            });
            return +val-1;
        });
        $('#unlike-' + likeid).replaceWith($('#like-' + likeid).html());
    }
</script>

И вид (я использую laravel):

 $if_null = App\Like::where('post_id','=', $deal->id)
                            -> where('user_id', '=', Auth::User()->id )
                            ->first();
                        if (is_null($if_null)){
                        ?>
                        <div id = "like-{{$deal->id}}">
                        <button onclick = "likethis(this.id)" name = "like" id = "{{$deal->id}}"  class = "link m-r-10"><i class = "fa fa-heart"></i></button>
                        </div>
                        <div style = "display:none;" id = "unlike-{{$deal->id}}">
                            <button onclick = "unlikethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart text-danger"></i></button>
                        </div>
                        <?php }
                        else {?>
                        <div id = "unlike-{{$deal->id}}">
                        <button onclick = "unlikethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart text-danger"></i></button>
                        </div>
                        <div style = "display:none;" id = "like-{{$deal->id}}">
                            <button onclick = "likethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart"></i></button>
                        </div>
                        <?php }?>
                        <div id = "dealid-{{$deal->id}}"> {{$deal->like->count()}} </div>

Может кто знает почему? большое спасибо! (: PS: Извините за мой английский.

Похоже, у вас есть 2 блока с одинаковым идентификатором? Один идет из теста is_null(), а потом еще один ниже?

Don't Panic 04.04.2018 11:35

Та, что с дисплеем: на замену нет, с ней что-то не так?

Liel Dahan 04.04.2018 11:39

Да :-) Идентификаторы должны быть уникальными - особенно если вы нацеливаетесь на них с помощью JS. Какой из них будет использовать JS, когда вы попытаетесь обратиться к #like-XX или #unlike-XX?

Don't Panic 04.04.2018 11:41

Хорошо, я попробую, спасибо ?

Liel Dahan 04.04.2018 11:46

Хорошо, я меняю его на "посмотреть в сообщении", я редактирую его, но все равно не работает.

Liel Dahan 04.04.2018 12:03
Поведение ключевого слова "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) для оценки ваших знаний,...
0
5
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хорошо, я попробую кое-что и получу то, что хочу, с этим кодом

            if ($('#like-' + likeid).is(":visible")) {
            $('#like-' + likeid).hide();
            $('#unlike-' + likeid).show();
        } else {
            $('#unlike-' + likeid).hide();
            $('#like-' + likeid).show();
        }

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