2010-10-04 13 views
16

JQuery'yi hala öğreniyorum, ancak sağlam bir yanıt bulamadım. JQuery selector $(...)'u her kullandığınızda, bir performans maliyeti olduğunu biliyorum, ancak $(this), onu kullanmadan önce önbelleğe almanız gereken önemli bir maliyete sahip mi?jQuery önbelleği (bu) için mantıklı mı?

var $this = $(this); 
+0

Başvuru için $ (this) maliyeti şöyledir: http://stackoverflow.com/a/6587740/781695 – Medorator

cevap

11

sen onu çok kullanıyorsanız, evet bu mantıklı veya zincir, ör .:

$(this).fadeIn().fadeOut().somethingElse(); 

bunun ise pahalı hale getirir? Hiçbir şey gerçekten büyük bir şemada değil ... ama eğer bir döngüdeyseniz, maliyet çarpar, bu yüzden önbelleğe almak en iyisidir. Bunu bir kereden fazla kullanırsanız, ne kadar önemli olduğunu düşündüğüm kod için ne kadar performansın önemli olduğuna bağlıdır.

0

İyi soru, Jason. JQuery seçici işlevinin this anahtar kelimesini oldukça verimli bir şekilde farkettiğini düşünün. Bu, eğer önleyebilirsiniz eğer aynı seçici tekrarlanan aramalar yapmak için mantıklı. Aynı işlevi aynı seçici farklı noktalarda çok kullanmaya gidiyoruz

$(this).hide().show().hide(); 

, muhtemelen dönüş değerini depolamak için bir değişken yapmak istiyorum: yöntem zincirleme kullanışlı de devreye giriyor jQuery seçici işlevi. Bunun için endişelenmeyeceğim, çünkü gerçekten çok ama çok az bir miktar işlem yapıldığı için ... özellikle jQuery kütüphanesinin bu anahtar kelimeyi (ve bir string tipini) daha önce kontrol ettiğinden eminim. herhangi bir normal ifadeyi çalıştırır.

+5

jQuery bunu asla göremezdi. Sadece bu kodda bu noktaya atıfta bulunulan referansı alırdı. Özel olarak tedavi edemez. – bambams

+0

Ah ha ... ve bu mantıklı. Yine de, bir öğeye özel bir gönderme, işlev, bir dize seçicisinde geçmeyle karşılaştırıldığında, bir değer döndürmeden önce çok fazla işlem gerektirmez. – treeface

+0

jQuery'nin yapacağı ilk kontrollerden biri, seçicinin bir DOMElement olup olmadığını görmek ve eğer öyleyse sarılmış elemanı döndürmek. İnsanların bunu kullanmasını umursamıyorum çünkü bu seçmenlerin önbelleğe almayı alışkanlık haline getirmenin iyi bir şey olduğunu, ancak 'bu' durumunun hangisi ile gittiğinizin önemi yok. –

İlgili konular