jQuery: prev() не работает?

у меня возникли проблемы с использованием prev () в jQuery, где он не выбирает правильный элемент.

моя структура HTML выглядит следующим образом:

<section id="about">
    ...
</section>
<hr>
<section id="contact">
    ...
</section>

раздел "активный" - это #contact. Я хочу выбрать предыдущий раздел, пропуская <hr>

active = active.prev('section') Кажется, не работает. Думаю, я неправильно читаю документы...

если я достану <hr> все работает прекрасно. Любые идеи о том, как пропустить <hr> на кнопки prev()?

ТИА

3 ответов


Я думаю, что, возможно, я неправильно читаю документы...

на API docs для .prev() дать такое описание:

описание: вам ближайший предшествующий одноуровневый элемент из каждого элемента в наборе совпавших элементов, дополнительно фильтруется с помощью селектора.

Итак, проблема в том, что hr есть и обыскивается .prev(), затем к 'section' селектор.


любые идеи о том, как пропустить <hr> на кнопки prev()?

можно назвать .prev() один раз, чтобы пропустить это hr затем вызвать его снова для раздела:

active = active.prev().prev('section');

или использовать .prevAll() и найти ближайший предшествующий (в случае, если перед ним есть какие-либо другие разделы):

active = active.prevAll('section').first();

используйте prevAll () вместо

active = active.prevAll('section')

из документации jQuery:

prev ()=> "получить непосредственно предшествующий брат" таким образом, он получит только первый элемент, поэтому при удалении <hr>, он будет работать.


или попробовать:

<section id="about">
    ...
<hr>
</section>
<section id="contact">
    ...
</section>