Sağ yüzden sağduyu bir sürü erişen olacağız elemanları, en iyi yolu böylece gibi onları önbelleğe olmasıdır tahmin:jQuery/javascript verimliliği için önbellekleme öğeleri?
var myEl = $('.myclass');
Ve sonra $ erişmek sadece edebilirsiniz (myEl) Gelecekte ve tekrar DOM aramanıza gerek yok, değil mi? Tamam, 20-30 gibi birçok farklı öğeye erişmem gereken oldukça karmaşık bir html yapısına sahip olduğumu söyleyeyim. Bu tür bir şeyi 30 kez yapmak çok çirkin!
var elA = $('.myela'),
elB = $('.myelb');
Vs vs, bunu bunu böyle yaparken, tüm bu unsurları aynı sınıf tutmak, ama onlara benzersiz bir kimliği vermek "kötü" bir şey var mı .. fikir edinmek, o zaman bunu:
var myElementObject={};
$('.myelems').each(function(){
myElementObject[$(this).attr('id')] = $(this);
});
bir object.whateverId olsun ve önbelleğe elemanı şu gibi geliyor Bu şekilde, ben DOM her zaman yeniden sorgulama olmadan gibi şimdi ben bunları kullanabilirsiniz, bu varsayım doğruysa bu bir kötü uygulama? Siz nasıl gidiyorsunuz?
Teşekkürler!
Tam olarak ".myelems" ile yaptığım şey, benim açıklamamda ortak sınıf olurdu, ama evet eğer $ ('# id') çok hızlıysa, insanlar neden "en iyi" uygulamalar ve "her zaman" hakkında oluyor? öğelerinizi önbelleğe aldınız mı? Bu benim elde edemediğim şey, çok fazla kullandığım veya rahatsız etmediğim öğeleri her zaman önbelleğe almalı mıyım? Performansı gerçekten çok etkiler mi? Bunun üzerinde bir _clear_ cevabı bulamıyorum. – neph
@nepth Söz konusu öğe üzerinde çok fazla işlem yapmak üzereyseniz öğeleri genellikle önbelleğe alırım. Örneğin, aynı öğeye bir döngüde erişmek üzereyim. Ayrıca, birkaç kez kullanacaksanız,/vel/css tabanlı sorguları bulmak gibi daha az performanslı sorguları önbelleğe almak için iyi bir fikir. Gerçi küresel olarak sorguları mutlaka önbelleğe almazdım. – Vadim
Evet sanırım bu mantıklı! – neph