2012-11-02 9 views
7

Wie schlimm ist es, ein verstecktes Element zu verstecken?Versteck eines versteckten Elements ... Wie schlimm?

Also sagen wir, das Element #myelement ist versteckt, und ich mache eine $('#element').hide(). Ist das schlecht? Soll ich zuerst nachsehen, ob es sichtbar ist?

Danke!

+1

Es ist schlecht, wie ein Blockelement zu zeigen! :) wenn du von einem einzigen Element sprichst .... kümmer dich nicht. Kunden warten. –

+0

Warum ein verstecktes Element verstecken? Was ist der Zweck davon? – Vucko

+0

@Vucko: Nicht absichtlich. Nur um den Code nicht zu verkomplizieren (mit der Logik, die notwendig ist, um redundantes Verstecken zu vermeiden). – Thilo

Antwort

14

prüft jQuery, wenn das Element sichtbar ist, und versteckt sich nur, wenn es sichtbar ist: https://github.com/jquery/jquery/blob/master/src/css.js#L78

} else if (!values[ index ] && !isHidden(elem)) { 
     jQuery._data(elem, "olddisplay", curCSS(elem, "display")); 
    } 

So tun Sie nicht müssen zusätzliche Prüfungen durchführen. Jede manuelle Überprüfung würde die Leistung (und die Lesbarkeit tatsächlich) verschlechtern.

0

Wenn Sie ein bereits ausgeblendetes Element ausblenden, passiert nichts.

Die einzige Möglichkeit, dass es "schlecht" ist, ist, dass Code ausgeführt wird, der nicht ausgeführt werden muss.

Sie könnten überprüfen, ob es versteckt verwendet wird():

if(!$("my-element").is(":visible")) { 
    $("my-element").hide(); 
}) 
+1

Allerdings führt dies dazu, dass anderer Code ausgeführt wird, der nicht sein muss (der Prüfcode). – Thilo

+0

true, aber dieser Prüfcode kann weniger als der interne Prüfcode von jQuery sein ...? Müsste sie beide profilieren, um sicher zu sein :) – danwellman

+0

im vermutlich häufigeren Fall (dass das Element tatsächlich versteckt werden muss), würden * beide * Prüfungen ausgeführt. – Thilo

0

Nur hiding das Element, das Sie nicht brauchen, um zu überprüfen, ob das Element bereits hidden ist oder nicht, aber wenn Sie einen Fall haben, wie wenn das Element dann zeigen, sonst noch etwas anderes tun, dann können Sie verwenden

if ($('your-element').is(':hidden')) { 
$('your-element').show(); 
} else { 
//do something else 
} 
1

Wenn es

und

if(!$("my-element").is(":visible")) { 
    $("my-element").hide(); 
}) 
ist

$("my-element").hide(); 
eine Wahl zwischen

es ist viel einfacher (besser?), Nur die erste Zeile aus Gründen der Lesbarkeit zu haben. jQuery überprüft, ob Sie es tun oder nicht.

+0

Sieht aus wie @zerkms sagte bereits das Gleiche. ** Sollte ** wirklich auf den Link Neue Antworten laden klicken, denke ich. – Abhilash

0

Es ist besser, die Sichtbarkeit des Elements zu überprüfen, bevor es ausgeblendet wird.

$('#element').hide(); 

es wird einige Probleme in Internet Explorer (IE9) verursacht. Einige Zeit Seite wird nicht richtig geladen. Einige Inhalte werden auf der Seite verfehlt.

Der folgende Code ist viel besser.

if(!$("#myelement").is(":visible")) { 
    $("#myelement").hide(); 
}) 
Verwandte Themen