Как я могу динамически скрывать элементы с помощью javascript?

if (fbValue.job_requested) {
    var driver_id = fbValue.driver_id;
    var driver_name = fbValue.driver_name;
    var requested = fbValue.job_requested;
    var time = "00:00";
    var list_id = "list"+driver_id;
    
    if (fbValue.job_requested) {
        time = fbValue.job_requested_time;
    }

    if (requested == "Yes") {
        console.info("test1");
        console.info($("#bubble").is(':hidden'));

        var bubble = "<div class= 'bubble' style=top:" + counter * 100 + "px';>"+driver_name+"<br>"+time+"<a id='"+driver_id+"' class='homeDriver'><span class='icon home'></a></span><a id='"+driver_id+"' class='notifyDriver'><span class='icon comments'></a></span><a id='"+driver_id+"' class='pauseDriver'><span class ='icon pause'></a></span><a id='"+driver_id+"' class='show'><span class='icon list'></a></span><a id = 'close'><span class ='icon close'></span></a></div>";

        var smsBubble = "<div class='smsBubble' id = 'smsBubble'><span class ='icon notifyComments'></span>"+driver_name+"<input type = 'text' class='textNotify' id='message'/><span class ='icon notifyClose'></span><div class='buttons'><a id = '"+driver_id+"'><button class='btn-sendClose'>Send & Close Card</a></button><a id = '"+driver_id+"' class ='sendSms'><button class='btn-send'>Send</a></button></div></div>";

        var pauseBubble = "<div class='pauseBubble' id = 'pauseBubble'><span class ='icon notifyPause'></span>"+driver_name+"<span class ='icon homeClose'></span><a id = '"+driver_id+"' class ='sendPause'><button class='btn-send'>Send</a></button></div></div>";;

        var homeBubble = "<div class='homeBubble' id = 'homeBubble'><span class='icon notifyHome'></span>"+driver_name+"<span class= 'icon notifyClose'></span><div class='buttons'><a id = '"+driver_id+"' class ='sendHome'><button class='btn-send'>Send</a></button></div></div>";

        $("#driverBubble").append(bubble);
        counter++;

        $('body').on('click','.notifyDriver', function(){
            $("#notifyBubble").append(smsBubble);
        })

        $("#close").click(function(){
            $("#driverBubble").hide();
        });

        // Ajax call to send custom message
        $('body').on('click','.sendSms',function(){
            var did = this.id;
            var message = $("#message").val();

            $.ajax({
                url:'sendnews',
                type:'GET',
                success:function(data){
                    $("#smsBubble").hide();
                },
                data: {
                    data: did, message
                }
            });
        });

Я пытаюсь понять, как «скрыть» мой элемент Bubble. У каждого пузыря есть кнопка X. Я использовал функцию .hide() и отображал этот элемент, когда был отправлен другой запрос, но проблема, с которой я столкнулся, заключается в том, что когда я отправляю другой запрос, он создает новый пузырь, а затем показывает первый. Таким образом, он в основном дублирует себя каждый раз, когда я отправляю новый запрос, используя это.

Я думал, что мне может понадобиться использовать цикл Foreach. Но я не уверен. Любая помощь приветствуется!

Поведение ключевого слова "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
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если вы дадите своим пузырям и кнопкам одно и то же имя класса, например. «bubble» и «btn-exit», затем вы можете перебирать их с помощью jQuery, чтобы вы могли прикреплять события щелчка к элементам.

Затем в этих прикрепленных событиях вы найдете свой родительский элемент относительно нажатой кнопки.

Так, например:

<div class = "bubble"><div class = "btn-exit">X</div></div>
<div class = "bubble smsBubble"><div class = "btn-exit">X</div></div>
<div class = "bubble pauseBubble"><div class = "btn-exit">X</div></div>
<div class = "bubble homeBubble"><div class = "btn-exit">X</div></div>

И затем jQuery:

$(".bubble").each(function(k, v) {
    var $bubble = $(this);
  $bubble.find('.btn-exit').click(function(e) {
    $bubble.hide();
  });
});

Взгляните на это демо: https://jsfiddle.net/damagex/2mxcyrwh/

Хорошо, просто обратите внимание, что когда вы создадите эти пузырьковые элементы позже в процессе, вам придется снова прикрепить эти события кликов. Возможно, вы захотите изучить создание элементов с помощью jQuery, чтобы вы могли мгновенно добавлять события.

DaMaGeX 21.12.2020 21:20

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