Функция Jquery remove() не работает

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть следующий фрагмент кода:

 $(".mydrop dt a").on('click', function() {
    if ($(".ulEvent").attr('style') === 'display: none;') {
          $('.rowSpaceEvent').remove();
        }
        $(".mydrop dd ul").slideToggle('fast');

        for (var i=0;i < $(".clsEvent").length;i  )
        {
            $(".eventDrop").append("<div class='row rowSpaceEvent'>amp;nbsp;</div>");
        }

    });
  

при запуске этого кода при первом запуске события click мои divs создаются так, как я их ожидаю. Если я снова пройду событие click и выполню код, он точно попадет в функцию remove(), но не удалит divs. Используя chrome, я все еще вижу элементы. Если я затем перейду в окно консоли Chrome, затем запустите ту же строку, что и divs, они будут удалены. По сути, я создаю пользовательский выпадающий список «на лету» с помощью флажков, и мне нужно нажать всю остальную часть страницы вниз, когда я открываю выпадающий список для количества элементов в выпадающем списке, а затем, когда выпадающий список снова щелкают, он закрывается, а остальная часть страницы перемещается назад.

Комментарии:

1. Пожалуйста, укажите свой HTML-код или ссылку на Jsfiddle

2. Вы проверили, что $(‘.rowSpaceEvent’) соответствует чему-либо на данный момент времени? Вы можете сделать это, вставив console.log($('.rowSpaceEvent')); перед строкой 3. Если вы откроете консоль разработчика, посмотрите, сможете ли вы обнаружить сообщение журнала. Если да, и если это не пустой массив, пожалуйста, дайте мне знать. Если это пустой массив, ваш селектор кажется неправильным, если вы ничего не видите $(".ulEvent").attr('style') === 'display: none;' , оператор, похоже, возвращает false

3. $(".ulEvent").attr('style') === 'display: none;' это плохой способ проверить CSS… Вы должны использовать $(".ulEvent").css("display")

4. @HanyAlsamman почему….

5. @HanyAlsamman То, что вы предложили, не имеет смысла.