Добавление и удаление содержимого в jQuery

Если я создаю функцию с помощью jQuery, которая добавляет пустой div, выполняет некоторую анимацию внутри пустого пространства, созданного div, а затем удаляет div, браузер никогда не освобождает место для пустого div (высота и ширина устанавливаются).

Если я не удалю пустой div в своей функции, браузер создаст необходимое пространство, и все будет работать правильно. Однако мне действительно нужно, чтобы пустое пространство, созданное div, было удалено после завершения анимации.

Есть ли способ поставить в очередь удаление div, чтобы браузер показывал желаемое поведение?

Не могли бы вы предоставить код jQuery, который у вас уже есть?

Philip Morton 02.10.2008 14:45

Вы уверены, что не удаляете div до завершения анимации? Как вы проверяете завершение анимации?

SpoonMeiser 02.10.2008 14:50
Поведение ключевого слова "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
2
7 154
4

Ответы 4

Разве это не работает, если использовать setTimeout? -)

Выполнив поиск в Google по jQuery и setTimeout, я нашел пример, который отправил меня по другому пути. Я думаю, проблема возникает из-за того, что манипуляции с div находятся в отдельном селекторе от реальной анимации. Это приводит к созданию и удалению div, даже если анимация все еще выполняется. Добавив в div простой оператор анимации, который откладывает удаление до завершения основной анимации, я могу добиться желаемого эффекта.

Проблема в том, что DOM не обновляется, пока ваша функция не завершится. Таким образом, использование setTimeout приведет к обновлению dom, и через 100 мс остальная часть вашей функции может продолжиться. Если вы не хотите, чтобы новый div был виден, я бы установил абсолютное положение, а верхний - примерно -5000. У него будут размеры и т. д., Его просто не будет видно. Вы также можете установить видимость (в css) на скрытую, если вы беспокоитесь, что она появится на экране.

Некоторые эффекты jQuery имеют обратные вызовы, которые запускаются после эффекта, например:

$('#someDiv').slideDown(100, function() { 
    $(this).remove(); 
});

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