JQuery: найдите поле ввода, ближайшее к кнопке
У меня есть большая форма HTML с несколькими полями ввода (по одному в каждой строке).
Среди них у меня есть несколько полей с определенным классом, которые появляются слева от кнопки.
В этих строках нет других кнопок или полей, поэтому они содержат только поле и кнопку, как показано ниже.
Как я могу получить идентификатор такого поля при нажатии на кнопку справа от него, т.е. ближе к нему?
Все поля, о которых идет речь, выглядят следующим образом:
<input type="text" class="dateField" data-date-format="yyyy-mm-dd" id="field1" name="field1" />
Все соответствующие кнопки выглядят следующим образом:
<button type="button">Select Date</button>
Спасибо за любую помощь в этом, Тим.
Ответы
Ответ 1
Поскольку <input>
находится слева от <button>
, вы можете найти его так:
$('button').on('click', function(){
alert($(this).prev('input').attr('id'));
});
Если <input>
был после <button>
, вы можете найти его следующим образом:
$('button').on('click', function(){
alert($(this).next('input').attr('id'));
});
Ответ 2
Вы можете перейти к родительской кнопке с помощью parent()
и найти вход для потомков с помощью find()
ИЛИ, если у вас многоуровневый потомок
$(this).parent().find('.dateField')
ИЛИ, если у вас есть потомки одного уровня
$(this).parent().children('.dateField')
или
$(this).siblings('.dateField');
Аналогичным образом вы можете использовать next()
или prev()
Ответ 3
Используйте . prev() или . next() если они рядом друг с другом. (Это должно быть быстрее всего.)
В противном случае вы также можете использовать . Closeest(), чтобы просто найти ближайший экземпляр этого класса.
Документация должна быть более чем достаточной.
Edit:
Вы также можете использовать . Siblings() для поиска своих братьев и сестер этого элемента.