В Javascript Я очищаю содержимое DIV, а затем повторно заполняю его, есть ли способ приостановить компоновку этих элементов или заблокировать пользовательский интерфейс, пока я не закончил прокручивать HTML? Я не хочу, чтобы какие-либо сообщения появлялись, я просто не хочу видеть мерцание, когда элементы удаляются/добавляются.Приостановить компоновку во время взаимодействия с DOM
ответ
скрыть это, добавив атрибут стиля для отображения: нет, делать вещи, а затем снова отобразить DIV после
Вы можете создать содержание нового элемента в DocumentFragment, прежде чем вставить его в реальный документ:
var fragment = document.createDocumentFragment();
// build node in fragment
var div = /* … */; // DIV that should be replaced
div.parentNode.replaceChild(fragment, div);
В большинстве графических библиотек используется один и тот же «трюк», называемый двойной буферизацией – xtofl
только совет может состоять в обновлении содержимого div в целом, путем создания всего содержимого html, а затем добавить его в div innerHTML сразу, как противоположно добавлению элемента в div один за другим, что является более дорогостоящим вычислительным поскольку он включает в себя восстановление дерева деревьев каждый раз (что также легко может вызвать мерцание)
Привет, я добавляю все это сразу, используя функцию html() JQuery. – Mantorok
Я обнаружил, что, применяя фиксированную высоту к сортировке сортировки, высота не была установлена до того, как она увеличивалась/уменьшалась с содержимым.
Спасибо за ответы, о и До!
Это приводит к тому, что div сбрасывается, я собираюсь проверить настройки высоты и посмотреть, могу ли я поддерживать постоянную высоту при этом, спасибо. – Mantorok
Вы можете поместить внешний div на место, чтобы сохранить согласованный размер ... просто мысль. –
Это то, что я сделал в конце, я забыл, что держатель места div был скрыт, поэтому я помещал в этот div местозаполнитель, и все в порядке. – Mantorok