Jquery, ближайший к значению элемента - PullRequest
4 голосов
/ 08 июля 2010

Я пытаюсь получить значение элемента формы, используя ближайший. Вот пример кода.

<table>
  <tr>
    <td>Hour <input type="input" value="12" name="data[hour]" class="hour" /></td>
    <td>Minute <input type="input" value="12" name="data[minute]" class="minute" /></td>
    <td><a href="#" class="add-data">Add Row</a></td>
  </tr>
</table>

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

Я пытался

var hour = $(this).closest('.hour').val();    
var hour = $(this).closest('input', '.hour').val();
var hour = $(this).closest('input[name="data[hour]]").val();

Есть идеи, как я могу получить значения формы?

Заранее спасибо

Ответы [ 2 ]

13 голосов
/ 08 июля 2010

Если у вас есть только один .hour элемент на tr, это сделает это:

var hour = $(this).closest('tr').find('.hour').val();

closest будет:

Получить первый элемент предка, который соответствует селектору, начиная с текущий элемент и прогресс через дерево DOM.

Итак, вам нужно подойти к tr и оттуда найти .hour потомка.

1 голос
/ 08 июля 2010

Чтобы расширить ответ Карима79:

.closest () перемещается вверх по дереву DOM, пока не найдет совпадение. Он не будет работать с элементами на одном уровне - например, в вашем случае (все элементы имеют td в качестве родителя).

http://api.jquery.com/closest/

Чтобы использовать closest () в вашей ситуации, вы должны использовать (что немного излишне):

$(this).closest("tr").find(".hour").val();
...