2010-11-11 21 views
6

Estoy intentando identificar el alto de un elemento div en HTML, pero no puedo acceder al valor fuera de la función. Este es el jQuery:Alcance variable fuera de la función 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 primera función de alerta funciona, pero la segunda lanza y error con $height como no definidos. ¿Cómo puedo conservar el valor de $height?

Respuesta

13

Usted puede simplemente eliminar el var así:

$height = $tmp_cont.height(); 

Si desea una variable global, dejar fuera de la var, o más explícitamente:

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

O si todavía quieres que locales , simplemente declararlo más arriba, así:

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 .. eso funciona gracias, ¿puedes? ease, explícame la diferencia de usar var y no usarlo? –

+0

@ atif089 - Muy simple aquí ... sin 'var' obtienes una variable declarada en el puntaje global (' ventana') en lugar de una local :) –

+1

Siempre debes usar var, incluso si lo declaras en alcance global . De lo contrario (con accidental-globales) puede obtener errores extraños en IE cuando intenta utilizar una variable con el mismo nombre que un elemento en la página. – bobince

Cuestiones relacionadas