Использование 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')

предыдущий