jQuery - Die beste Art, Elemente zu verstecken? (um zu verhindern, dass das Element blinkt, bevor es tatsächlich versteckt wird)

8

Ich erinnere mich, dass Opera ( Mostlikely it was Safari instead. ) irgendwann ein Problem hatte, dass wenn man .hide() für ein Element verwendete, es kurz aufblinken würde, bevor es das Element tatsächlich ausblenden würde.

Nun, wenn Sie diejenigen nicht ignorieren wollen, die aus irgendeinem Grund js in ihrem Browser nicht haben, können Sie wirklich CSS verwenden, um display: none; in diesem Element zu setzen, um es zu verstecken und dann js zu verwenden, um es zum Beispiel einzublenden / p>

Ich habe kürzlich festgestellt, dass dies in Opera nicht mehr passiert ist. Also, würde ich gerne wissen, ob dies immer noch in einigen Browsern passiert, wenn ich das verpasst habe .. Und davon ausgehen, dass dies passieren würde. Welcher Weg wäre der sicherste Weg? (natürlich in diesem Fall die CSS-Methode zu ignorieren.)

js .hide()

js .addClass('hide') css .hide { display: none; }

Oder etwas anderes?

Bearbeiten:

js element.style.display = "none"

js $(element).css({display:"none"})

Bearbeiten2: Dieses Problem ist möglicherweise in Safari aufgetreten. Ich habe auch gedacht, dass neuere jQuery-Versionen das Problem behoben haben könnten. Wie ich glaube, gab es ein paar Bug-Berichte über dieses Problem auf der Jquery-Website, aber ich konnte diese Fehlerberichte nicht finden ..Oder es könnte immer noch sein, dass neuere Browser-Version es behoben .. nicht sicher.

Edit3:

Also habe ich tatsächlich viel mehr darüber gefunden, als ich in Safari anstatt in Opera nach diesem Fehler gesucht habe. Obwohl ich nicht mit Sicherheit sagen kann, dass es auch in der Oper nie passiert ist ...

Es scheint so, als ob dieses Problem nicht mehr existiert und dass es sicher ist, .hide() zu verwenden, aber was ich gelernt habe, war, dass dieses $(element).css({display:"none"}) das Problem behoben hat, als das Problem noch nicht da war.

    
Joonas 21.08.2011, 21:41
quelle

3 Antworten

5

Sie sollten sich immer darauf verlassen, dass Sie mit der Methode jQuery hide() jedes Element ausblenden, da es sich um alle Browser kümmert. Ich habe jedoch keine Probleme in Opera gesehen.

Um auch nur ein Element anzuzeigen, sollten Sie sich aus demselben Grund immer wieder auf die Methode show() verlassen.

z. Um ein tr Element anzuzeigen, wenn wir tr.css("display", "block") sagen, funktioniert es in Firefox nicht, da es sich um eine Tabellenzeile handelt, die als .css("display", "table-row") angegeben werden muss. Aber wenn Sie tr.show() verwenden, müssen Sie sich keine Sorgen um einen Browser machen.

    
ShankarSangoli 21.08.2011, 21:59
quelle
1

Fügen Sie einfach eine Anzeige hinzu: none in einem Stylesheet oder fügen Sie einen Inline-Stil="display: none" für das Element ein.

    
Nerudo 15.11.2011 14:31
quelle
0

Sie könnten noscript verwenden, um ein alternatives Element zur Verfügung zu stellen, das immer angezeigt wird, während das JS-Element versteckt beginnt.

Oder Sie könnten anfangen mit einer Klasse ohne CSS-Regeln beginnen und dann ein Skript bekommen, um die CSS-Klassenregel zu ändern, um sicherzustellen, dass das Element versteckt beginnt.

%Vor%     
Dunes 21.08.2011 23:16
quelle

Tags und Links