2012-11-02 6 views
7

Quanto è pericoloso nascondere un elemento nascosto?Nascondere un elemento nascosto ... Quanto male?

Quindi, supponiamo che l'elemento #myelement sia nascosto e che io faccia un $('#element').hide(). È così male? Dovrei controllare se è visibile prima?

Grazie!

+1

È male come mostrare un elemento di blocco! :) se stai parlando di un solo elemento .... non preoccuparti. I clienti stanno aspettando –

+0

Perché nascondere un elemento nascosto? Qual è lo scopo di questo? – Vucko

+0

@Vucko: non di proposito. Giusto per evitare di complicare il codice (con la logica necessaria per evitare il nascondimento ridondante). – Thilo

risposta

14

jQuery controlla se l'elemento è visibile e nasconde solo se è visibile: https://github.com/jquery/jquery/blob/master/src/css.js#L78

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

in modo da non necessità di eseguire ulteriori controlli. Qualsiasi controllo manuale potrebbe peggiorare le prestazioni (e la leggibilità).

0

Se si nasconde un elemento già nascosto, non accadrà nulla.

L'unico modo per cui è "cattivo" è che sta eseguendo codice che non ha bisogno di essere eseguito.

Si potrebbe verificare se si è nascosto utilizzando è():

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

Tuttavia, ciò comporta l'esecuzione di un altro codice che non è necessario (il codice di controllo). – Thilo

+0

true, ma questo codice di controllo potrebbe essere inferiore al codice di controllo interno di jQuery ...? Dovrebbe profilare entrambi per essere sicuri :) – danwellman

+0

nel caso presumibilmente più frequente (che l'elemento ha effettivamente bisogno di nascondere), * entrambi * verrebbero eseguiti. – Thilo

0

Solo hiding l'elemento non è necessario verificare se l'elemento è già hidden o no, ma se si dispone di un caso come se l'elemento è quindi mostrare altro fare qualcosa di diverso, allora si può usare

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

Se c'è una scelta tra

$("my-element").hide(); 

e

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

è molto più semplice (meglio?) Avere solo la prima riga per motivi di leggibilità. jQuery controllerà se lo fai o no.

+0

Sembra che @zerkms abbia già detto la stessa cosa. ** Dovresti ** fare clic sul link Carica nuove risposte, penso. – Abhilash

0

È meglio controllare la visibilità dell'elemento prima di nasconderlo.

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

causerà alcuni problemi in Internet Explorer (IE9). Alcune pagine temporali non verranno caricate correttamente. Alcuni contenuti saranno persi dalla pagina.

Il seguente codice è molto meglio.

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