2010-11-11 46 views
6

HTML'de div öğesinin yüksekliğini tanımlamaya çalışıyorum, ancak işlevin dışındaki değere erişemiyorum. Bu jQuery geçerli:jQuery işlevi dışında değişken Kapsam

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); 

ilk uyarı fonksiyonu çalışır, ancak ikinci olarak tanımlanmamış $height ile atar ve hata. $height'un değerini nasıl koruyabilirim? Hala yerel istiyorsanız

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

Veya: bir global değişken istiyorsanız,

$height = $tmp_cont.height(); 

var kapalı bırakın, ya da daha açık bir şekilde:

cevap

13

Sadece böyle var kaldırabilir , sadece şu şekilde bildirin:

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 .. bu işe yarar, teşekkürler bana kullanarak var kullanmanın farkını ve kullanılmamasını rahatlatır mı? –

+0

@ atif089 - Oldukça basit ... 'var' olsanız, global skorda ('window') yerel değişken yerine bildirilen bir değişken olsun :) –

+1

Eğer global kapsamda bildirseniz bile, her zaman var kullanmalısınız. . Aksi halde (yanlışlıkla-globals ile), sayfadaki bir öğe ile aynı ada sahip bir değişken kullanmaya çalıştığınızda, IE'de tuhaf hatalar alabilirsiniz. – bobince