2010-11-11 7 views
6

J'essaie d'identifier la hauteur d'un élément div en HTML, mais je ne suis pas en mesure d'accéder à la valeur en dehors de la fonction. Ceci est le jQuery:Portée variable hors fonction jQuery

jQuery.noConflict(); 

(function($) { 
    $(function() { 
     $tmp_cont = $('<div></div>'); 
     $tmp_cont.html($content); 
     $tmp_cont.hide(); 
     $('body').append($tmp_cont); 

     var $height = $tmp_cont.height(); 

     alert ($height); 
    }); 
})(jQuery); 

alert ($height); 

La première fonction d'alerte fonctionne, mais le second lance et l'erreur avec $height comme non défini. Comment puis-je conserver la valeur de $height?

Répondre

13

Vous pouvez simplement supprimer le var comme ceci:

$height = $tmp_cont.height(); 

Si vous voulez une variable globale, laisser tomber le var, ou plus explicitement:

window.$height = $tmp_cont.height(); 

Ou si vous voulez toujours locale , il suffit de le déclarer plus haut, comme ceci:

jQuery.noConflict(); 
var $height; 
(function($) { 
    $(function() { 
     $tmp_cont = $('<div></div>'); 
     $tmp_cont.html($content); 
     $tmp_cont.hide(); 
     $('body').append($tmp_cont); 

     $height = $tmp_cont.height(); 
     alert ($height); 
    }); 
})(jQuery); 
alert ($height); 
+0

wow .. qui fonctionne merci, pouvez-vous pl facilité expliquez-moi la différence d'utiliser var et ne pas l'utiliser? –

+0

@ atif089 - Assez simple ici ... sans 'var' vous obtenez une variable déclarée dans le score global (' window') au lieu d'un local :) –

+1

Vous devriez toujours utiliser var, même si vous le déclarez dans la portée globale . Sinon (avec les globals accidentels) vous pouvez obtenir des erreurs bizarres dans IE lorsque vous essayez d'utiliser une variable avec le même nom qu'un élément sur la page. – bobince