11
votes

JQuery obtenir la hauteur d'un élément caché

J'essayais d'obtenir une liste de la valeur de la hauteur de l'élément, mais il revenait 0.
J'ai fait des recherches et j'ai vu que pour obtenir la hauteur d'un élément, cet élément doit être visible.
Mais je veux vérifier sa hauteur quand elle est cachée. Si sa hauteur est plus grande que certaines valeurs, utilisez certaines fonctions, faites-la rendre visible. Y a-t-il un moyen de faire cela?

Je veux dire:

  1. Vérifiez la hauteur de l'élément caché.
  2. s'il a une valeur correcte le rend visible.
  3. S'il n'a pas besoin de valeur requise, faites certaines fonctions.
  4. rendez-le visible.

3 commentaires

Dupliqué exact de Stackoverflow.com/Questtions/2345784/...


Il fonctionne avec des éléments cachés - jsfiddle.net/xgbev


@ken Redler: C'est la meilleure solution que j'ai trouvée à ce sujet. Je viens de devoir utiliser .append to («corps») parce que cela n'a pas fonctionné avec .Show ()


3 Réponses :


6
votes

Un moyen est de cloner l'objet, de positionner le clone loin à l'extérieur de la fenêtre, rendez-la visible, mesurez le clone, puis détruisez-le.

Vous avez donc: P>

$('#maybe')
  .clone()
  .attr('id','maybe_clone') // prevent id collision
  .css({                    // position far outside viewport
    'position': 'absolute',
    'left': '-1000px'
  });

if( $('#maybe_clone').show().height() > 200 ) {
  $('#maybe').show();
}

$('#maybe_clone').remove();       // housekeeping


3 commentaires

+1, cela ou temporairement positionner absolument et déplacer l'élément lui-même. Étant donné que l'élément est caché pour commencer, il ne perturbera pas le balisage.


Si Affichage: Aucun est appliqué à un élément parent, cela ne fonctionnera pas. Un correctif injecterait le clone à l'extérieur de son parent d'origine: .clone (). APPENDTO ('Corps') .


merci de me donner un indice pour calculer la hauteur de div cachée



17
votes

Vous pouvez montrer l'élément Obtenez la hauteur, puis la masque, vous ne verrez visuellement aucune différence. XXX

démo


4 commentaires

Je pensais montrer un élément puis cacher cela causera un problème visuel, mais je le teste maintenant. Oui, ça ne fait aucun problème. Merci pour l'aide.


Mais si vous regardez ma réponse, vous verrez que vous n'avez pas besoin de le faire.


@Alienwebguy - IE6 donne 0 si l'élément est caché.


Cela semble que ça marche..Je aussi pensait que cela scintille mais ce n'est pas le cas.



0
votes

Positionnez l'objet afin qu'il soit visible pour le navigateur, mais pas l'utilisateur: jQuery: obtenir la hauteur de l'élément caché à JQuery < / a>


0 commentaires