2010-09-09 3 views
13

Я ищу способ, которым я мог бы выбрать элемент div, который не является прямым рядом с тем, который «выбран» по функция щелчка.Jquery Выберите элемент 2 позиции дальше - другой способ .next(). Next()

<div id="click">(siblings)</div><div>text</div><div id="get this one"></div> 

Теперь я хотел бы, чтобы выбрать один с идентификатором «получить этот» - в моем коде этот идентификатор не доступен. Все divs имеют один и тот же класс и имеют братьев и сестер.
Я мог бы выбрать третий на $(this).next().next(), но я думаю, что это не лучший способ сделать это.
Также может быть div с до щелчка - так что это не обязательно первый.

Я попробовал переключатель :nth-child, но не нашел решение.
Позже я также захочу выбрать 13-й после щелчка (или 23-го, 65-го и так далее). Это означает, что я хотел бы иметь довольно динамичное решение этой проблемы.

Спасибо за вашу помощь,
Phil

ответ

20

Вы можете использовать .nextAll() с .eq() для динамического подхода, как это:

$(this).nextAll().eq(1) //0 based index, this would be .next().next() 

Это позволит вам получить n братьев и сестер вперед, что кажется быть тем, кем вы являетесь.

+0

Хорошо, теперь я чувствую себя идеологом. Это так просто - и это работает, конечно. Это имеет такое чувство, что я ненавижу меня за то, что я не работаю сам. Но спасибо вам большое :) – Phil

0

Кажется, что $(this).parent().find('div').eq(2).attr('id') должен работать.

UPDATE (Добавлено находкой ('DIV'))

+0

Это всегда приводило бы к пустым наборам элементов. '.parent()' выбирает один элемент, а не братья и сестры :) –

+0

Прежде, ваш ответ имел следующийAll ('eq: 2'). Будет ли это работать так же, как и то, что у вас есть для вашего ответа сейчас? Какая разница? – d2burke

+0

@ d2burke - Вы получаете третий элемент в родительском, независимо от того, что ... это не относится к элементу * current *, он просто получает третий, независимо от того, что вы нажали. Также мой ответ использовал ': eq (1)' для второго, это индекс на основе 0 :) –