Я пытаюсь получить значение элемента формы, использующее самый близкий. Здесь некоторый пример кода.
<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();
Какие-либо идеи, как я могу получить значения формы?
Заранее спасибо
Предполагая, что у вас есть только один элемент .hour
на tr, это сделает это:
var hour = $(this).closest('tr').find('.hour').val();
closest
:
Получит первый элемент-предок, который соответствует селектору, начиная с текущий элемент и прогрессирует через дерево DOM.
Итак, вам нужно подняться на tr и оттуда найти потомка .hour
.
Чтобы расширить ответ Karim79:
.closest () перемещается вверх по дереву DOM, пока не найдет совпадение. Он не будет работать с элементами на одном уровне - например, в вашем случае (все элементы имеют td как родительский).
http://api.jquery.com/closest/
Чтобы использовать closest () в вашей ситуации, вам придется использовать (что здесь немного излишне):
$(this).closest("tr").find(".hour").val();