web-dev-qa-db-fra.com

Différence entre jQuery .hide () et .css ("display", "none")

Y a-t-il une différence entre

jQuery('#id').show() and jQuery('#id').css("display","block")

et

jQuery('#id').hide() and jQuery('#id').css("display","none")
77
Sashi Kant

jQuery ('# id'). css ("display", "block")

La propriété display peut avoir plusieurs valeurs possibles, parmi lesquelles block, inline, inline-block et beaucoup plus .

La méthode .show() ne le définit pas nécessairement sur block, mais le réinitialise à ce que vous avez défini (le cas échéant).

Dans le code source de jQuery, vous pouvez voir comment ils définissent la propriété display sur "" (chaîne vide) pour vérifier ce qu'il était avant toute manipulation de jQuery: petit lien .

Par contre, le masquage se fait via display: none;, vous pouvez donc considérer que .hide() et .css("display", "none") sont équivalents à un point.

Il est recommandé d'utiliser .show() et .hide() de toute façon pour éviter les tracas (en plus, ils sont plus courts).

90
Chris

Différence entre show () et css ({'display': 'block'})

En supposant que vous ayez ceci au début:

<span id="thisElement" style="display: none;">Foo</span>

quand vous appelez:

$('#thisElement').show();

tu auras:

<span id="thisElement" style="">Foo</span>

tandis que:

$('#thisElement').css({'display':'block'});

est-ce que:

<span id="thisElement" style="display: block;">Foo</span>

oui, il y a une différence.

Différence entre hide () et css ({'display': 'none'})

comme ci-dessus mais changez-les en hide () et affichez ':' none '......

Autre différence Lorsque .hide() est appelée, la valeur de la propriété display est enregistrée dans le cache de données de jQuery. Ainsi, lorsque .show() est appelé, la valeur d'affichage initiale est restaurée!

33
Talha

Oui, il y a une différence dans les performances des deux: jQuery('#id').show() est plus lent que jQuery('#id').css("display","block") comme dans le cas précédent, un travail supplémentaire doit être effectué pour extraire l'état initial du cache jQuery car l'affichage n'est pas un attribut binaire. il peut s'agir de inline, block, none, table, etc. semblable à la méthode hide().

Voir: http://jsperf.com/show-vs-addclass

6
aquasan

pas de différence

En l'absence de paramètre, la méthode .hide () est le moyen le plus simple de masquer un élément:

$ ('. target'). hide (); Les éléments correspondants seront immédiatement masqués, sans aucune animation. Cela équivaut à appeler .css ('display', 'none'), sauf que la valeur de la propriété display est enregistrée dans le cache de données de jQuery afin que l'affichage puisse ensuite être restauré à sa valeur initiale. Si un élément a une valeur d'affichage inline, alors est masqué et affiché, il sera à nouveau affiché en ligne.

Pareil pour le spectacle

4
Arsen Mkrtchyan

Oui, il y a une différence.

jQuery('#id').css("display","block") définira toujours l'élément que vous souhaitez afficher en tant que bloc.

jQuery('#id').show() est le type d'affichage initial, display: inline par exemple.

Voir Jquery Doc

3
Jonas Ibsen

Vous pouvez consulter le code source (ici, il s'agit de la version 1.7.2).

À l'exception de l'animation que nous pouvons définir, ceci conserve également en mémoire l'ancien style d'affichage (qui n'est pas dans tous les cas block, il peut également s'agir de inline, table-cell, ... ).

2
Samuel Caillerie

voir http://api.jquery.com/show/

En l'absence de paramètre, la méthode .show () est le moyen le plus simple d'afficher un élément:

$ ('. target'). show ();

Les éléments correspondants seront immédiatement révélés, sans aucune animation. Cela équivaut à peu près à appeler .css ('display', 'block'), sauf que la propriété display est restaurée dans l'état initial. Si un élément a une valeur d'affichage inline, alors est masqué et affiché, il sera à nouveau affiché en ligne.

1
Corinne Kubler