2012-10-16 23 views
8
  1. Bu iki kod parçacığı aynı şeyi yapıyor mu? Eğer evet ise, diğeri ne zaman kullanılmalıdır?jquery seçici döngü işlevi aynı işlevi kullanma

    $("foo").each(function(i,value) { 
        $(this).empty(); 
    }); 
    

    vs (eğer i veya value karıştığı bir şey yapmak gerektiğinde yanı sıra) Genel olarak

    $("foo").empty(); 
    
  2. o $("foo").someMethod() anlamı olduğu kabul edilebilir "üzerinde eşleşen her elemanı somemethod() çalıştırmak yöntem, yöntemin adı each ise (yani, her biri özel bir durumdur)

+1

etmezsen

$(selector).someMethod();

değil' Boşaldığınız öğenin indeksine ihtiyacınız varsa, her bir() kullanmanıza gerek yoktur. komut. Kısa sözdizimi ile git. – Lix

+1

@Lix: Aynı zamanda daha hızlı çalışır: http://jsperf.com/jquery-selector-looping-vs-using-function-each – RASG

cevap

4

Stokta jQuery işlevlerine başvurduğunuz varsayılıyorsa, evet, iki kod parçacığı aynıdır.

each() işlevini dizinde çalışmak istediğinizde veya uzun işlev zincirlemesini önlemek için kullanmalısınız.

$('foo').someMethod() anlayışınız jQuery yöntemleri için doğrudur. Ancak uyarılmalıdır, bazı eklentiler seçiciyi farklı bir şekilde ele alabilir veya sadece ilk eşleştirilmiş elemanı etkileyebilir.

+0

Bir eklentinin jQuery seçiciyi böyle bir şekilde nasıl "kirletebileceğini" açıklayabilir misiniz? (eğer $ ('')) – wal

+0

'a atıfta bulunuyorsanız Seçiciyi bu şekilde' kirletmez ', ancak eklenti sadece ilk eşleştirilmiş öğeyi taşıyabilir. – BenM

3

Evet, çoğu jQuery işlevi şu şekilde tasarlanmıştır. Kod örneği

Görünüş:

$.fn.someMethod = function() { 
    return this.each(function() { 
     do_something(this); 
    }); 
}; 

Yani bile tekrar .each kullanabilirsiniz, sadece kullanmalısınız:

$(selector).each(function() { 
    $(this).someMethod(); 
}); 
+0

Geçerli jquery noob-ness anlamını anlamıyor. "$ .fn.someMethod" bölümünü açıklayabilir misiniz? – wal

+0

@wal Bu, yöntemi jQuery prototipine koymak demektir. JQuery eklentisinin nasıl yapılacağına dair bazı makaleleri kontrol edebilirsiniz. – xdazz