2013-06-05 26 views
5

'daki $ (window) ile window arasındaki fark nedir? Javascript penceresi ve jquery $ (window) arasındaki fark nedir?jquery/javascript

Chrome konsolunda çalıştı ve bana böyle: Yani enter image description here

, ben sonuçlandırmak istiyorum o zaman ben üzerinde jQuery'nin işlevleri kullanabilirsiniz bir şekilde bir jquery nesne sarılmış "sadece" bir pencere nesnesi (yükseklik(), genişlik(), vb. gibi))

Ben googling'i denedim, ve OFS'ten kurtulma, ama şanssızlık.

+9

Sonucunuz oldukça doğru. Benim görüşüme göre başka bir açıklama gerekmiyor. – nnnnnn

+0

Aslına bakarsanız haklısınız. – Igarioshka

+1

Benzer bir şey de buna benzer [jQuery $ (this)] (http://stackoverflow.com/questions/1051782/jquery-this-vs-this)! –

cevap

4

, kod o parça JS motoru çalıştırmak için gidiyor bilmeli Biz bunu vs vs gayrimenkulünü verileri ilişkilendirebilir, biz onun çocuk herkesin erişebileceği sadece normal jQuery nesnesi gibi kullanabilirsiniz . JQuery nesnelerinin hepsinin neden parantez içinde olduklarını hiç merak ettiniz mi? Bunun nedeni, $'un bir işlev nesnesi olmasıdır. Temel olarak $ işlevini ve global olarak yerel global veya window nesnesini argüman olarak çağırıyorsunuz.

jQuery kaynak koduna göz atarsanız, bu nesneyi birçok iç işlevde geçireceğini ve sonunda bir jQuery sarıcı nesnesi döndüreceğini görürsünüz.
Evet, varsayımlarınız oldukça doğru.

0

window global bir nesnedir ve üçüncü taraf kitaplarıyla ilişkisi yoktur. ancak $ (window), bir jQuery nesnesi döndürür. Onun bir sarıcıdan başka bir şey değil, ama tüm olası jQuery güzellikleriyle geliyor. Eğer $(window) yazarken

+0

'window' bir DOM nesnesi değil, global nesnelere genel bir başvuru. Bunu yapan bir betik yazmanız yeterli: '' konsol.log '' (bu === window); '' true kaydeder. Olduğu gibi: 'console.log (bu.Pencere === pencere === this) '' basit içinde 'dom, –

+0

aah gerçek şu her durumda, size Elias –

+0

@EliasVanOotegem teşekkür - Senin ikinci örnek' console.log (this.window === window === bu) 'log'lar false '. – nnnnnn

0

Sen küresel pencere nesnesi içeren bir jQuery sarıcı Ture

pencere vardır. Buradaki amaç, width(), height(), scrollLeft() ve scrollTop() gibi jQuery yöntemlerine anında erişim sağlayacak yerel kapsamlı bir pencere değişkeni oluşturmaktı.

+1

Parçayı özledin, sanırım: Küresel object_'ın yerel kapsamlı bir değişkenini nasıl oluşturabilirsin? –

+0

@EliasVanOotegem - 'var localVariable = window;' yapardı değil mi? Fakat yine de bu cevap gerçekten anlamlı değildir çünkü değişkenin kapsamı üzerinde hangi yöntemlerin mevcut olduğuyla hiçbir ilgisi yoktur. – nnnnnn

0

window nesnesi, pencerenin kendisini temsil eder. Daha fazla açıklama here bulabilirsiniz. Yukarıda açıkladığınızdan, window özellikleri yerine document özelliklerine erişmek istediğiniz görünüyor. aşağıdaki gibi vb özellikler uzunluk, yükseklik, erişebilir:

  • document.height (saf javascript) veya $ (document) .height() (jQuery)
  • document.width (saf javascript) veya $ (document) .width() (jQuery) daha document özellikleri için

, here bakın.

+0

Neden "$ (window) .height()'? Tarayıcının görüntü alanının yüksekliğini (genellikle) belgenin yüksekliğiyle aynı değildir. – nnnnnn

+0

Bunu da yapabilirsiniz, sadece farklı bir sonuç elde edersiniz, çünkü window.height tarayıcı yerine pencerenin yüksekliğini alır. Bu yüzden document.height yerine window.innerHeight kullanarak daha az bir sayı elde edeceksiniz. Kullanım, elde etmeye çalıştığınız şeye oldukça bağlı. – user2424941