2 Stimmen

Gleichzeitige Iteration über zwei Gruppen von Elementen in jQuery

Ich habe eine Tabelle mit vielen Paaren von Texteingabefeldern in separaten Spalten. Ich möchte die Eingabefelder in der ersten Spalte durchlaufen und diese Werte verwenden, um den Wert des entsprechenden Eingabefeldes in der benachbarten Spalte festzulegen.

<table>
    <tr>
         <td><input type="text" class="left" /></td>
         <td><input type="text" class="right" /></td>
    </tr>
    <tr>
         <td><input type="text" class="left" /></td>
         <td><input type="text" class="right" /></td>
    </tr>
  ...
</table>

Ich habe gerade angefangen, jQuery zu lernen, also ist die Antwort vielleicht offensichtlich. Bis jetzt habe ich nur

$("input.left").each(function() {
    // use the value of $(this) to set the 
    // value of the text field to the .right
})

6voto

Jerub Punkte 40038

Das, was Sie vorhaben, wird als "Zip"-Vorgang bezeichnet. Dies ist etwas, das in funktionalen Programmiersprachen häufig vorkommt. Es handelt sich um eine Funktion, die zwei Sequenzen gleicher Länge zu einer einzigen Sequenz kombiniert, die ein Paar (oder n-Tupel) von Elementen enthält.

Hier finden Sie eine Implementierung von 'zip' für jquery. Es ist ein jQuery-Plugin. Verfügbar auf Google Code

Es sieht so aus, als könnte man es so verwenden:

$.zip($("input.left"), $("input.right")).each(function () {
   var left = this[0];
   var right = this[1];
})

2voto

cletus Punkte 596503

Es gibt viele Möglichkeiten, dies zu tun. Hier ist eine.

$("tr").each(function() {
  $(this).find(":last-child input").val($(this).find(":first-child input").val());
});

oder eine andere:

$("input.left").each(function() {
  $(this).parent().nextSibling().find("input.right").val(this.value);
});

und so weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X