İlginç ve önemli ipuçlarının çoğundan daha önce bahsedilmiş gibi görünüyor, bu yüzden bu sadece küçük bir ekleme.
Küçük ipucu jQuery.each (nesne, geri arama) işlevidir. Herkes doğal olduğu için jQuery nesnesinin kendisini yinelemek için muhtemelen jQuery.each (geri arama) işlevini kullanıyor. JQuery.each (object, callback) yardımcı programı işlevi, nesneler ve diziler üzerinden yinelenir. Uzun bir süre boyunca, bir şekilde farklı bir sözdizimi dışında ne olabileceğini görmedim (tüm moda döngülerini yazmayı umursamıyorum) ve ana gücünü sadece son zamanlarda gerçekleştirdiğim için biraz utanıyorum.
Mesele şu ki , jQuery.each (nesne, geri arama) içindeki döngü gövdesi bir işlev olduğundan , döngüde her seferinde yeni bir kapsam elde edersiniz , bu da özellikle döngüde kapaklar oluşturduğunuzda uygundur .
Başka bir deyişle, tipik bir yaygın hata şunun gibi bir şey yapmaktır:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Şimdi, functions
dizideki işlevleri çağırdığınızda undefined
, büyük olasılıkla istediğiniz şey olmayan içerikle üç kez uyarı alacaksınız . Sorun şu ki, sadece bir değişken var i
ve her üç kapanış da buna işaret ediyor. Döngü bittiğinde, son değeri i
3 ve someArrary[3]
olur undefined
. Kapanışı sizin için yaratacak başka bir işlev çağırarak bunun etrafında çalışabilirsiniz. Veya temelde sizin için yapacağı jQuery yardımcı programını kullanın:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Şimdi, fonksiyonları çağırdığınızda beklendiği gibi 1, 2 ve 3 içerikli üç uyarı alırsınız.
Genel olarak, kendiniz yapamayacağınız bir şey değil, ama olması güzel.