2010-03-02 6 views
9

In Javascript räume ich den Inhalt eines DIV aus und befülle es dann neu. Gibt es eine Möglichkeit, das Layout dieser Elemente zu unterbrechen oder die Benutzeroberfläche zu sperren, bis ich mit dem Schrägstrich fertig bin HTML? Ich möchte nicht, dass irgendwelche Nachrichten erscheinen, ich möchte das Flimmern nur nicht sehen, wenn die Elemente entfernt/hinzugefügt werden.Suspend-Layout während der DOM-Interaktion

Antwort

2

verstecken es, indem Sie die Stil-Attribut display: none, tun das Zeug, dann wieder anzuzeigen, die div nach

+0

Das führt dann dazu, dass das div kollabiert, ich werde die Höheneinstellungen überprüfen und sehen, ob ich dabei eine gleichbleibende Höhe beibehalten kann, danke. – Mantorok

+1

Du könntest ein äußeres Div setzen, um die Größe konsistent zu halten ... nur ein Gedanke. –

+0

das habe ich am Ende gemacht, ich habe vergessen, dass der Div-Platzhalter versteckt wurde, also habe ich einen Platzhalter in dieses div gesetzt und alles ist in Ordnung. – Mantorok

13

Sie könnten das neue Element der Inhalt in einem DocumentFragment bauen, bevor es in das eigentliche Dokument einfügen:

var fragment = document.createDocumentFragment(); 
// build node in fragment 

var div = /* … */; // DIV that should be replaced 
div.parentNode.replaceChild(fragment, div); 
+2

Die meisten Grafikbibliotheken verwenden den gleichen 'Trick', genannt Double Buffering – xtofl

0

nur Beratung könnte sein, den div-Inhalt als Ganzes zu aktualisieren, indem Sie den gesamten Inhalt html und dann fügen Sie es zu dem div innerHTML auf einmal, als gegenüber Elemente zu dem div eins nach dem anderen hinzufügen, die mehr Rechenaufwand ist teuer da es sich jedes Mal um den dom-baum handelt (der leicht auch flackern kann)

+0

Hallo, ich füge es alle auf einmal mit JQuery html() -Funktion. – Mantorok

0

Ich fand, dass durch die Anwendung einer festen Höhe auf die div sortierte es, die Höhe wurde nicht festgelegt, so dass es mit dem Inhalt wuchs/schrumpfte.

Danke für die Antworten, oh und Doh!

Verwandte Themen