$ .Each (selector) ve $ (selector) .each () arasındaki fark nedir


83

Bunun arasındaki fark nedir:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());

ve bu:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });

Seçilen ve üzerinde işlem yapılan tablo hücresinin html'si şuna benzer:

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>

JQuery belgelerini gözden geçirdim, ancak yine de farkı anlamıyorum. (Ben miyim yoksa bu belgeler içerik netliği açısından bazen biraz "belirsiz" midir?)

Eklenen Bilgi:

Görünüşe göre genel bir örnek girişimim insanların kafasını karıştırıyor! İlk örnekteki (önceden) eksik parantezle birlikte. :(

İlk örnek, işaretlenmiş bir onay kutusu olan tüm satırlar için <tbody> karakterini kaldıran kodumdaki bir satırdan gelir:

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());

İkinci örnek, işaretlenmiş onay kutuları için #classesTable'a baktığım ve bir açılır menüden eşleşen öğeyi kaldırdığım bir durumdan geliyor.

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});

İki farklı şey yaptıklarını anlıyorum, ancak "Bu durumda $ .each () kullanmam gerekiyor ve başka bir durumda .each (function () {}) kullanmam gerekecek kadar değil.

Hiç değiştirilebilirler mi? Sadece bazı durumlarda? Asla?


İlk kod örneğinizde bir kapanış ayracı eksik.
tjollans

Bir yorum ve virgül, bir örnek için cevabıma bakın.
StuperUser

İlk örneğin amacı birkaç farklı şekilde yorumlanabilir. Lütfen gerçekte ne yaptığınızı yansıtacak şekilde düzeltin.
user113716

Eksik sağ parantezi satırın sonuna, noktalı virgülden hemen önce ekledim.
marky

Yanıtlar:


104

Açıklama:

.eachyalnızca jQuery nesneleri koleksiyonunu yinelemek için kullanılan bir yineleyicidir, jQuery.each( $.each) ise JavaScript nesneleri ve dizileri üzerinde yineleme yapmak için genel bir işlevdir.


Örnekler

1) Fonksiyonu kullanma$.each()

var myArray = [10,20,30];

$.each( myArray, function(index, value) {
   console.log('element at index ' + index + ' is ' + value);
});

//Output
element at index 0 is 10
element at index 1 is 20
element at index 2 is 30

2) Yöntemi kullanma.each()

$('#dv').children().each(function(index, element) {
    console.log('element at index ' + index + 'is ' + (this.tagName));
    console.log('current element as dom object:' + element);
    console.log('current element as jQuery object:' + $(this));
});

//Output
element at index 0 is input
element at index 1 is p
element at index 2 is span

Kaynaklar


5

dan http://api.jquery.com/jQuery.each :

$ .Each () işlevi, yalnızca bir jQuery nesnesi üzerinde yineleme yapmak için kullanılan .each () işleviyle aynı değildir. $ .Each () işlevi, ister bir harita (JavaScript nesnesi) isterse bir dizi olsun, herhangi bir koleksiyon üzerinde yineleme yapmak için kullanılabilir.


3

$.eachÖğe veya başka bir şey olmayan bir dizi ile gerçekten kullanmak istiyorsunuz . yani:

var x = ["test", "test2"];

Bunu $.each(x...geçmek yerine geçmek için kullanırsınız x.each:)

.each sadece öğeler içindir :)


1

İşlevsel bir fark yoktur. Her jQuery nesnesi, kendisinden .each()miras alınan bir yönteme sahiptir jQuery.fn. Bunu çağırarak object method, jQuery hangisinin Array (-like object)yineleneceğini zaten biliyor . Başka bir deyişle, indexed propertysgeçerli jQuery nesnesinden döngü oluşturur .

$.each()Öte yandan, herhangi bir Arrayveya türünün üzerinde döngü yapan bir "yardımcı araç" dır Object, ancak elbette o yönteme hangi hedefi yinelemek istediğinizi söylemeniz gerekir.
Ayrıca bir Dizi veya nesneye geçip geçmediğinizle de ilgilenir, bir for-inveya for loopkaputun altında doğru olanı yapar .


1

İlki, geri arama işlevini, ilettiğiniz koleksiyondaki öğelere çalıştırır, ancak kodunuz şu anda sözdizimsel olarak doğru değildir.

Olmalı:

$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);

Bakınız: http://api.jquery.com/jQuery.each/

İkincisi, işlevi üzerinde çalıştırdığınız koleksiyonun her bir öğesi üzerinde çalıştıracaktır.

Bakınız: http://api.jquery.com/each/


Onu do_somethinggeçmek yerine çağırıyorsun . do_somethingBir işlev döndürülmediği sürece bu yanlıştır .
user113716

0

İlk durumda, jQuery nesneleri ve ayrıca diğer dizi öğelerini burada belirtildiği gibi yineleyebilirsiniz:

jQuery.each ()

İkinci durumda, burada belirtildiği gibi yalnızca jQuery nesneleri üzerinde kayıt yapabilirsiniz:

.her biri()


0

Anladığım kadarıyla $.each();bir nesne veya dizi aracılığıyla döngüler ve size her öğenin yineleyicisini ve değerini verir.

$().each(); jQuery nesneleri listesi boyunca döngü oluşturur ve size yineleyici ve jQuery nesnesini verir.


0

Http://api.jquery.com/jQuery.each/ adresinden alınmıştır

$.each()İşlev ile aynı değildir .each()bir jQuery nesnenin üzerine, özel olarak, yineleme için kullanılan,. $.each()İşlev, bir harita (JavaScript nesne) veya bir dizi olup, herhangi bir toplama yineleme kullanılabilir. Bir dizi durumunda, geri çağırma her seferinde bir dizi dizini ve buna karşılık gelen bir dizi değeri iletilir. (Değere bu anahtar sözcük aracılığıyla da erişilebilir, ancak Javascript, basit bir dize veya sayı değeri olsa bile bu değeri her zaman bir Nesne olarak sarar.) Yöntem, yinelenen nesne olan ilk bağımsız değişkenini döndürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.