Одновременная итерация по двум наборам элементов в jQuery - PullRequest
2 голосов
/ 06 марта 2009

У меня есть таблица, содержащая множество пар полей ввода текста в отдельных столбцах. Я хочу перебрать поля ввода в первом столбце и использовать эти значения для установки значения соответствующего поля ввода в соседнем столбце.

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

Я только начал изучать jQuery, поэтому, возможно, ответ очевиден. Пока у меня есть только

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

Ответы [ 2 ]

6 голосов
/ 06 марта 2009

То, что вы хотите сделать, называется операцией «zip». Это часто встречается в функциональных языках программирования. Это функция, которая объединяет две последовательности одинаковой длины в одну последовательность, содержащую пару (или n-кортеж) элементов.

Здесь вы можете найти реализацию zip для jquery. Это плагин jQuery. Доступно в Google Code

Похоже, вы можете использовать его как tihs:

$.zip($("input.left"), $("input.right")).each(function () {
   var left = this[0];
   var right = this[1];
})
2 голосов
/ 06 марта 2009

Множество способов сделать это. Вот один.

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

или другое:

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

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...