Frage Was ist der Unterschied zwischen $ .each (Selektor) und $ (Selektor) .each ()


Was ist der Unterschied zwischen diesen:

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

und das:

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

Der HTML-Code für die Tabellenzelle, die ausgewählt und bearbeitet wird, sieht folgendermaßen aus:

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

Ich habe die jQuery-Dokumentation gelesen, aber ich verstehe den Unterschied immer noch nicht. (Ist es mir oder ist diese Dokumentation manchmal leicht "nebulös" in inhaltlicher Klarheit?)

Info hinzugefügt:

Anscheinend ist mein Versuch ein generisches Beispiel, verwirrende Menschen! Zusammen mit der (bisher) fehlenden Klammer im ersten Beispiel. :(

Das erste Beispiel stammt aus einer Zeile in meinem Code, die das <tbody> für alle Zeilen mit einem aktivierten Kontrollkästchen entfernt:

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

Das zweite Beispiel stammt aus einer Situation, in der ich die #classesTable für alle aktivierten Kontrollkästchen durchsuche und das entsprechende Element in einem Dropdown-Feld lösche.

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

Ich verstehe, dass sie zwei verschiedene Dinge tun, aber nicht so weit, dass ich sagen könnte: "Ich muss $ .each () in diesem Fall und .each (function () {}) in einem anderen Fall verwenden.

Sind sie überhaupt austauschbar? Nur in einigen Fällen? Noch nie?


75
2017-07-07 13:16


Ursprung


Antworten:


Beschreibung: 

.each ist ein Iterator, mit dem nur über jQuery iteriert wird   Sammlung von Objekten während jQuery.each ($.each) ist ein General   Funktion zum Iterieren über Javascript-Objekte und -Arrays.

Beispiele:

Javascript Array (oder js Objekt) mit $ .each ():

var myArray = [10,20,30];

jQuery.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

jQuery-Objekte mit .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

Wenn Sie weitere Beispiele + Details suchen, $ .each vs .each ()

Ressourcen


96
2017-07-07 13:20



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

Die Funktion $ .each () ist nicht identisch   als .each (), das zum Iterieren verwendet wird,   ausschließlich über ein jQuery-Objekt. Das   $ .each () - Funktion kann verwendet werden   Iterieren über jede Sammlung, ob   Es ist eine Karte (JavaScript-Objekt) oder eine   Array.


5
2017-07-07 13:21



Du willst es wirklich gebrauchen $.each mit einem Array, das keine Elemente oder etwas ist. zB:

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

Du würdest es benutzen $.each(x... um das zu überschreiten statt x.each :)

.each ist nur für Elemente :)


3
2017-07-07 13:19



Es gibt keinen funktionalen Unterschied. Jedes jQuery-Objekt besitzt ein .each() Methode geerbt von jQuery.fn. Indem ich das anrufe object method, jQuery weiß schon was Array (-like object) über iterieren. Mit anderen Worten, es schleift über die indexed propertys aus dem aktuellen jQuery-Objekt.

$.each() Auf der anderen Seite ist es nur ein "Hilfsprogramm", das sich über jede Art von Schleife bewegt Array oder Object, aber natürlich musst du der Methode sagen, welches Ziel du iterieren willst.
Es wird auch auf dich aufpassen, ob du ein Array oder Objekt übergibst, es tut das Richtige mit a for-in oder for loop unter der Haube.


1
2017-07-07 13:20



Die erste führt die Callback-Funktion für die Elemente in der Sammlung aus, die Sie übergeben haben, aber Ihr Code ist momentan nicht syntaktisch korrekt.

Es sollte sein:

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

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

Die zweite Funktion führt die Funktion für jedes Element der Sammlung aus, auf der Sie sie ausführen.

Sehen: http://api.jquery.com/each/


1
2017-07-07 13:19



Im ersten Fall können Sie über jQuery-Objekte und andere Array-Elemente wie hier angegeben iterieren:

jQuery.each ()

Im zweiten Fall können Sie nur über jQuery-Objekte iterieren, wie hier angegeben:

.jeder()


0
2017-07-07 13:21



Von dem, was ich verstehe $.each(); Durchläuft ein Objekt oder Array und gibt Ihnen den Iterator und den Wert jedes Elements.

$().each(); Durchläuft eine Liste von jQuery-Objekten und gibt Ihnen den Iterator und das jQuery-Objekt.


0
2017-07-07 13:21



Genommen von http://api.jquery.com/jQuery.each/

Das $.each() Funktion ist nicht dasselbe wie .each(), die verwendet wird, um ausschließlich über ein jQuery-Objekt zu iterieren. Das $.each() Funktion kann verwendet werden, um über jede Sammlung zu iterieren, sei es eine Karte (JavaScript-Objekt) oder ein Array. Im Falle eines Arrays wird dem Callback jedes Mal ein Array-Index und ein entsprechender Array-Wert übergeben. (Auf den Wert kann auch über das Schlüsselwort this zugegriffen werden, aber JavaScript umschließt diesen Wert immer als Objekt, auch wenn es sich um einen einfachen String- oder Zahlenwert handelt.) Die Methode gibt ihr erstes Argument zurück, das Objekt, das iteriert wurde.


0
2017-07-07 13:19