0
Gegeben:Verständnis `Kinder()` `von tr`
HTML
<table>
<tr>
<td class='foo'>foo</td>
<td class='a'>bar</td>
</tr>
<tr class='here'></tr>
</table>
Coffee
row = $('.foo').closest('tr')
$.each row.nextUntil('.tr'), (i) ->
console.log 'i:', i
children = $(this).children
childrenWithA = $(this).children('.a')
console.log 'children.length', children.length
console.log 'childrenWithA.length', childrenWithA.length
Ich verstehe nicht, warum childrenWithA.length
-0
auswertet, nicht 1
. Ich erwartete mindestens eine einzige child
mit Klasse = a
aufgrund <td class='a'>bar</td>
.
i: 0
children.length 2
childrenWithA.length 0
Ich folge nicht, was die 'nextUntil (". Tr ")' dreht. Wenn Sie 'nextUntil (". Tr ")' verwenden, springt Ihr Code über den ersten 'tr' (mit dem' .a' Kind) und beginnt stattdessen mit dem folgenden 'tr' ohne. – Jamiec
Ich benutze 'nextUntil', um' '' s von '
OK, aber die äquivalente jQuery gibt nicht die gleiche Ausgabe wie Sie beschreiben: https://jsfiddle.net/9c8zevdo/ – Jamiec
Antwort
Das liegt daran, dass die
.nextUntil
nicht das Element umfasst zur Zeit in dem Stapel (in Ihrem Falltr
mit.a
).Wenn Sie den aktuellen Stapel hinzufügen möchten, sollten Sie
.addBack
verwenden.Sie können es sehen, hier zu arbeiten: https://jsfiddle.net/9f3kcoq6/1/
Beachten Sie auch, dass
$.each
verwendet werden soll, wenn Sie Schleife eines nicht-jQuery-Objekt oder ein Array. Andernfalls verwenden Sierow.nextUntil('.tr').addBack().each (i) ->
.Was, warum
children.length
bewerten als2
finden @jamiec answer.Zusätzlicher Hinweis darauf: seit
children
einer Funktion zugeordnet ist,.length
Rückkehr die Anzahl der Argumente verwenden, die akzeptieren funktionieren, also warum die Regeln für Methodenaufrufe 2.Quelle
2016-06-29 14:54:41
_Das ist, weil die .nextUntil das Element derzeit nicht enthält. .._ Das ist richtig, aber erklärt nicht die Ausgabe '0, 2, 0', die '0, 0, 0' sein sollte, wenn es überhaupt keine Kinder gibt. – Andreas
@Andreas Jamiec erklärte es, aber ich fügte eine Notiz hinzu erkläre es ein wenig. –
In Coffee zurückgeben sind
Methoden mit Parametern aufgerufen, sind Klammern optional
Methodenaufrufe ohne Parameter müssen umfassen die Klammern
Sie Klammern aus dem Aufruf von
children
fehlt.Sobald dies festgelegt ist - der Coffee Ausgang dre gleiche gibt, ist die damit verbundene jQuery nur Ausgabe: https://jsfiddle.net/Lt9qfdbc/
Hinweis: Sie möchten möglicherweise
addBack()
auch per @ Karl-André Gagnon Antwort, um den ersten gehörentr
ElementQuelle
2016-06-29 14:57:38 Jamiec
Verwandte Themen