Bien que cette question ait déjà reçu de nombreuses réponses, j'ai pensé y ajouter une réponse plus complète et plus solide pour les futurs utilisateurs. La réponse principale résout le problème, mais je pense qu'il est préférable de connaître/comprendre les différentes façons d'afficher/cacher les choses.
.
Changer l'affichage en utilisant css()
C'est comme ça que je faisais jusqu'à ce que je trouve d'autres méthodes.
Javascript :
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Pour :
- Cache et décachette. C'est à peu près tout.
Cons :
- Si vous utilisez l'attribut "display" pour autre chose, vous devrez coder en dur la valeur de ce qu'il était avant le masquage. Ainsi, si vous aviez "inline", vous devriez faire ce qui suit
$("#element_to_hid").css("display", "inline");
sinon, il reviendra par défaut à "block" ou à toute autre option qui lui sera imposée.
- Se prête aux erreurs de frappe.
Exemple : https://jsfiddle.net/4chd6e5r/1/
.
Modification de l'affichage à l'aide de addClass()/removeClass()
En préparant l'exemple de cette méthode, j'ai rencontré certains défauts qui la rendent très peu fiable.
Css/Javascript :
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Pour :
- Il cache parfois..... Reportez-vous à la page 1 de l'exemple.
- Après le démasquage, la valeur d'affichage précédente.... sera parfois utilisée à nouveau. Reportez-vous à la page 1 de l'exemple.
- Si vous voulez attraper tous les objets cachés, il vous suffit de faire
$(".hidden")
.
Cons :
- Ne cache pas si la valeur d'affichage a été définie directement sur le html. Voir la page 2 de l'exemple.
- Ne se cache pas si l'affichage est défini en javascript à l'aide de css(). Reportez-vous à la page 3 de l'exemple.
- Un peu plus de code car il faut définir un attribut css.
Exemple : https://jsfiddle.net/476oha8t/8/
.
Changer l'affichage en utilisant toggle()
Javascript :
$("element_to_hide").toggle(); // To hide and to unhide
Pour :
- Ça marche toujours.
- Cela vous permet de ne pas avoir à vous soucier de l'état dans lequel il se trouvait avant le changement. L'utilisation la plus évidente est celle d'un bouton....toggle.
- Court et simple.
Cons :
- Si vous avez besoin de savoir dans quel état il passe pour faire quelque chose qui n'est pas directement lié, vous devrez ajouter du code (une instruction if) pour savoir dans quel état il se trouve.
- Comme dans l'exemple précédent, si vous voulez exécuter un jeu d'instructions qui contient la fonction toggle() dans le but de cacher, mais que vous ne savez pas si elle est déjà cachée, vous devez ajouter une vérification (une instruction if) pour le savoir d'abord et si elle est déjà cachée, alors passez. Reportez-vous à la page 1 de l'exemple.
- En rapport avec les deux inconvénients précédents, l'utilisation de toggle() pour quelque chose qui est spécifiquement caché ou spécifiquement montré, peut être source de confusion pour les autres personnes qui lisent votre code, car elles ne savent pas de quelle manière elles vont basculer.
Exemple : https://jsfiddle.net/cxcawkyk/1/
.
Modification de l'affichage à l'aide de hide()/show()
Javascript :
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Pour :
- Ça marche toujours.
- Après le démasquage, la valeur d'affichage précédente sera à nouveau utilisée.
- Vous saurez toujours vers quel état vous changez :
- il n'est pas nécessaire d'ajouter des instructions if pour vérifier la visibilité avant de changer d'état si l'état importe.
- n'embrouillera pas les autres lecteurs de votre code quant à l'état dans lequel vous passez si, si l'état importe.
- Intuitif.
Cons :
- Si vous voulez imiter une bascule, vous devrez d'abord vérifier l'état et ensuite passer à l'autre état. Utilisez plutôt toggle() pour cela. Reportez-vous à la page 2 de l'exemple.
Exemple : https://jsfiddle.net/k0ukhmfL/
.
Dans l'ensemble, je dirais que le mieux est de recourir à hide()/show(), sauf si vous avez spécifiquement besoin d'une bascule. J'espère que ces informations vous ont été utiles.