Использование jQuery для получения следующего или предыдущего элемента из выделения
Как я могу получить предыдущий или следующий элемент из выбора jQuery?
В принципе, у меня будет набор элементов, скажем все входы:
$('input')
Когда у меня есть один вход, мне также нужно получить предыдущий и следующий ввод.
Что-то вроде:
$(this).prev('input')
$(this).next('input')
Однако входы не являются братьями и сестрами, и мне не нужен только следующий элемент DOM. Я хочу, чтобы следующий элемент в выборе jQuery (входы в этом случае).
Я знаю, что я могу выполнять итерацию с помощью выбора jQuery с помощью
.each(function(...
Но мне не нужно перебирать все элементы, только до и после.
Элементы также будут динамически упорядочены (используя jQuery UI sortables).
Ответы
Ответ 1
Вы можете сделать что-то вроде этого:
var inp = $('input');
var index = inp.index(this);
var next = inp[index+1];
var prev = inp[index-1];
Обратите внимание, что prev
и next
, как раз это не объекты jQuery, а объект DOM. Чтобы сделать их объектами jQuery, вы должны обернуть их в функцию $()
.
Ответ 2
jQuery имеет встроенную поддержку, как вам требуется,
$($('input')[0]).next('input')
next
$($('input')[0]).prev('input')
предыдущий