2010-11-11 14 views
6

Sto cercando di identificare l'altezza di un elemento div in HTML, ma non sono in grado di accedere al valore esterno alla funzione. Questo è il jQuery:Ambito variabile all'esterno jQuery function

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 prima funzione di allarme funziona, ma il secondo getta e l'errore con $height indefinita. Come posso mantenere il valore di $height?

risposta

13

Si può solo togliere il var in questo modo:

$height = $tmp_cont.height(); 

Se si desidera una variabile globale, lasciare fuori la var, o più esplicitamente:

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

Oppure, se si vuole ancora che locale , basta dichiararlo più in alto, in questo modo:

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 .. che funziona grazie, puoi pl facilità mi spieghi la differenza di usare var e non usarlo? –

+0

@ atif089 - Semplicemente semplice qui ... senza 'var' si ottiene una variabile dichiarata nel punteggio globale (' window') invece di una locale :) –

+1

Si dovrebbe sempre usare var, anche se lo si dichiara in ambito globale . In caso contrario (con globali accidentali) è possibile ottenere strani errori in IE quando si tenta di utilizzare una variabile con lo stesso nome di un elemento nella pagina. – bobince