14 Stimmen

Ereignisse vor $(document).ready

Ich habe eine Funktionalität, um Steuerelemente bedingt vor dem Laden des Dokuments auszublenden. Wenn ich diese Funktionalität auf $(document).ready setze, sehe ich das Seitenflimmern, um die Steuerelemente bedingt auszublenden. Ich würde gerne wissen, ob es ein Ereignis gibt, das aufgerufen werden kann, bevor $(document).ready ausgelöst wird.

3 Stimmen

Kannst du sie nicht standardmäßig auf versteckt setzen und nur diejenigen anzeigen, die du auf $(document).ready benötigst?

0 Stimmen

Wenn Sie standardmäßig versteckt sagen, beziehen Sie sich darauf, CSS zu verwenden, um sie zu verstecken. Wenn ich das mache, wird jQuery in der Lage sein, sie anzuzeigen und auszublenden?

0 Stimmen

Ja, ich meine mit CSS, und ja, jQuery kann es auch.

6voto

jfriend00 Punkte 632952

Gängiges Problem. Verwenden Sie CSS, um die Steuerelemente standardmäßig auszublenden, und verwenden Sie dann JS beim $(document).ready, um zu entscheiden, welche Steuerelemente sichtbar gemacht werden sollen. Es wird kein Flimmern geben. Es wird einfach so aussehen, als würden die entsprechenden Teile der Seite progressiv geladen werden.

Sie können JS nicht sicher ausführen, bevor das Dokument bereit ist, und Teile des Dokuments werden sichtbar sein, bevor Sie JS ausführen können. Die einzige Lösung besteht darin, sicherzustellen, dass alle nicht-flimmernden Elemente standardmäßig ausgeblendet sind, und dann nur diejenigen anzuzeigen, die sichtbar sein sollen.

Der einfachste Weg, dies zu tun, besteht darin, allen dynamischen Elementen einfach eine gemeinsame Klasse hinzuzufügen:

und CSS zu verwenden, um sicherzustellen, dass sie alle standardmäßig ausgeblendet sind:

.initiallyHidden {display: none;}

Und dann überschreibt Ihr JavaScript dies, wenn es entscheidet, dass ein Element sichtbar sein soll:

document.getElementById("myControl1").style.display = "block";

6voto

kobe Punkte 15289

Wie von anderen erwähnt, mach etwas Ähnliches wie dies

 mein verstecktes div-Tag 

.hidden
{
 display:none;   
}

im document.ready, kannst du zeigen, dies entspricht dem onload, das darauf wartet, dass das HTML geladen wird

$(document).ready(function() {
  $('#test').show();
});

jsfiddle Beispiel hier

http://jsfiddle.net/kdpAr/

1voto

Austin Ginder Punkte 506

Wenn ich etwas verstecken musste, bevor Javascript geladen wird, würde ich es im CSS wie folgt verstecken:

 display:none;

oder:

 visibility: hidden;

Sie können auch Bedingungen in Kombination mit Javascript verwenden, um es bei Bedarf anzuzeigen.

0 Stimmen

Oder da jQuery erwähnt wurde: class="ui-helper-hidden-accessible"

1voto

Chamika Sandamal Punkte 22854

Rufen Sie die JavaScript-Funktion neben dem HTML-Element auf

beispiel:

call JS Funktion

0 Stimmen

Vielen Dank, auf diese Weise wird es nicht möglich sein, Dinge generisch zu tun. Wenn ich mehrere Elemente ausblenden und anzeigen muss, ist es möglicherweise nicht die richtige Wahl, dies mit dem zu tun, was du gezeigt hast.

1 Stimmen

Agreed but you can refer all the external JavaScript reference end of the page. and cal the JavaScript function after all element. this will save the referenced file load time.then you can run the function before all file loaded.

0voto

MaxiWheat Punkte 5928

Sie können einfach ein Skript-Tag direkt nach dem HTML öffnen, das Sie bedingungsweise ausblenden möchten (jQuery muss jedoch zuvor deklariert werden) und dann direkt ausblenden aufrufen, nicht innerhalb eines $(document).ready wie folgt:

Lorem ipsum

  $("#toHide").hide();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X