Sebbene a questa domanda sia stata data risposta molte volte in precedenza, ho pensato di aggiungere ad essa una risposta più completa e solida per i futuri utenti. La risposta principale risolve il problema, ma credo che potrebbe essere meglio conoscere / comprendere alcuni dei vari modi per mostrare / nascondere le cose.
.
Cambiare display usando css ()
Questo è il modo in cui lo facevo fino a quando non ho trovato alcuni di questi altri modi.
Javascript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Professionisti:
- Nasconde e rivela. Questo è tutto.
Contro:
- Se usi l'attributo "display" per qualcos'altro, dovrai codificare il valore di quello che era prima di nascondersi. Quindi, se avessi "inline", dovresti farlo
$("#element_to_hid").css("display", "inline");altrimenti tornerà di default a "block" o qualsiasi altra cosa in cui sarà forzato.
- Si presta a errori di battitura.
Esempio: https://jsfiddle.net/4chd6e5r/1/
.
Modifica della visualizzazione mediante addClass () / removeClass ()
Durante l'impostazione dell'esempio per questo, in realtà ho riscontrato alcuni difetti su questo metodo che lo rendono molto inaffidabile.
CSS / Javascript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Professionisti:
- Si nasconde .... a volte. Fare riferimento a p1 nell'esempio.
- Dopo aver scoperto, tornerà a utilizzare il valore di visualizzazione precedente .... a volte. Fare riferimento a p1 nell'esempio.
- Se vuoi prendere tutti gli oggetti nascosti, devi solo farlo
$(".hidden").
Contro:
- Non si nasconde se il valore di visualizzazione è stato impostato direttamente sull'html. Fare riferimento a p2 nell'esempio.
- Non si nasconde se il display è impostato in javascript usando css (). Fare riferimento a p3 nell'esempio.
- Un po 'più di codice perché devi definire un attributo css.
Esempio: https://jsfiddle.net/476oha8t/8/
.
Cambiare visualizzazione usando toggle ()
Javascript:
$("element_to_hide").toggle(); // To hide and to unhide
Professionisti:
- Funziona sempre
- Ti consente di non doverti preoccupare di quale stato fosse prima del passaggio. L'uso ovvio per questo è per un pulsante .... attiva / disattiva.
- Breve e semplice
Contro:
- Se hai bisogno di sapere a quale stato sta passando per fare qualcosa che non è direttamente correlato, dovrai aggiungere altro codice (un'istruzione if) per scoprire in quale stato si trova.
- Simile alla precedente con, se si desidera eseguire un set di istruzioni che contiene il toggle () allo scopo di nascondersi, ma non si sa se è già nascosto, è necessario aggiungere un segno di spunta (un'istruzione if) per scoprirlo prima e se è già nascosto, quindi salta. Fare riferimento a p1 dell'esempio.
- In relazione ai precedenti 2 contro, l'uso di toggle () per qualcosa che si nasconde o mostra in modo specifico, può essere fonte di confusione per gli altri che leggono il tuo codice in quanto non sanno in che modo commutare.
Esempio: https://jsfiddle.net/cxcawkyk/1/
.
Cambiare visualizzazione usando hide () / show ()
Javascript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Professionisti:
- Funziona sempre
- Dopo aver scoperto, tornerà a utilizzare il valore di visualizzazione precedente.
- Saprai sempre a quale stato stai scambiando in modo da:
- non è necessario aggiungere istruzioni if per verificare la visibilità prima di modificare gli stati se lo stato è importante.
- non confonderà gli altri che leggono il tuo codice su quale stato stai passando se, se lo stato conta.
- Intuitivo.
Contro:
- Se vuoi imitare un interruttore, devi prima controllare lo stato e poi passare all'altro stato. Usa toggle () invece per questi. Fare riferimento a p2 dell'esempio.
Esempio: https://jsfiddle.net/k0ukhmfL/
.
Nel complesso, direi il meglio per essere hide () / show () a meno che non sia specificamente necessario che sia un interruttore. Spero che queste informazioni ti siano state utili.
return falseaonclick?