Рассмотрю методы для нахождения следующих и предыдущих элементов из выборки. Предполагается, что имеется группа элементов, у которых один родитель.
Чтобы не ходить вокруг да около, приведу пример HTML-разметки:
Видно, что у элемента-родителя
имеется двенадцать элементов-потомков 1
ul class="test"
.1
li class="test__item"
Так вот, в библиотеке jQuery имеются несколько методов, с помощью которых можно “погулять” по этому DOM-дереву. Расссмотрю каждый из них в отдельности.
Но стоит сразу сказать - как всегда, эти методы очень краткие и предельно понятные. Вся “прелесть” начинается, когда методы объединяют в jQuery-цепочку.
Метод next()
С помощью этого метода возвращается элемент, находящий следующим по отношению к текущему элементу.
Приведу такой JS-код:
… который выполняет следующее:
- создать переменную
и поместить в нее результат выборки1
list
1
$('.test')
- в переменной
найти все элементы1
list
1
li
- вернуть элемент
с индексом 6 -1
li
1
.eq(6)
- найти следующий за ним элемент
1
li
- присвоить ему класс
1
.test__link--nexted
В результате выполнения этого кода класс
будет присвоен элементу 1
.test__link--nexted
с индексом 7 (или восьмому - по счету):1
li
Метод prev()
Этот метод абсолютно аналогичен методу
за тем исключением, что его действие направлено в противоположную сторону. Метод 1
next()
возвращает элемент, который предшествует текущему элементу.1
prev()
То есть, такой JS-код:
- создаст переменную
и поместит в нее результат выборки1
list
1
$('.test')
- в переменной
найдет все элементы1
list
1
li
- вернет элемент
с индексом 6 -1
li
1
.eq(6)
- найдет предшествующий ему элемент
1
li
- присвоит ему класс
1
.test__link--preved
Результатом выполнения этого кода класс
будет присвоен элементу 1
.test__link--preved
с индексом 5 (или шестому - по счету):1
li
Краткое заключение
Обобщением вышесказанного является такое предложение. Методы
и 1
next()
возвращают один элемент, который является следующим или предшествует текущему элементу. Все элементы имеют одного общего родителя и поиск осуществляется только в этих рамках (другими словами - это sibling-элементы).1
prev()
Методы nextAll() и prevAll()
Производными от рассмотренных мною выше методов
и 1
next()
являются методы 1
prev()
и 1
nextAll()
. Фактически, это те же самые методы 1
prevAll()
и 1
next()
, но в этих методах возвращается не один элемент, а все оставшиеся элементы, которые являются sibling по отношению к текущему элементу.1
prev()
То есть, такой JS-код:
- создаст переменную
и поместит в нее результат выборки1
list
1
$('.test')
- в переменной
найдет все элементы1
list
1
li
- вернет элемент
с индексом 3 -1
li
1
.eq(3)
- найдет все следующие за ним элементы
-1
li
1
.nextAll()
- присвоит всем найденным элементам
класс1
li
1
.block__item--squared
Результатом будет такой HTML-код:
Метод
работает аналогично, но “в другую сторону”. Этот метод возвращает все элементы, которые предшествуют текущему элементу.1
prevAll()
То есть, такой JS-код:
- создаст переменную
и поместит в нее результат выборки1
list
1
$('.test')
- в переменной
найдет все элементы1
list
1
li
- вернет элемент
с индексом 3 -1
li
1
.eq(3)
- найдет все элементы
, которые предшествуют ему -1
li
1
.prevAll()
- присвоит всем найденным элементам
класс1
li
1
.block__item--circled
Результатом работы этого js-скрипта будет такой HTML-код:
Общее заключение
Вывод по методам
и 1
nextAll()
. Эти методы работают с sibling-элементами, то есть - имеющими одного родителя. Эти методы возвращают все найденные элементы, которые предшествуют или расположены после текущего элемента.1
prevAll()
Методы
и 1
nextAll()
очень похожи также на рассмотренный мною в предыдущей статье метод 1
prevAll()
. Вот только действие метода 1
siblings
более “тупое” (если позволительно так сказать) - этот метод “фигачит” свое действие сразу в обе стороны от текущего элемента, по принципу - “от забора и до обеда”.1
siblings
Методы
и 1
nextAll()
более “интеллектуальные” - они “фигачат” свое действие только в одну сторону - указанную.1
prevAll()
Ну, а методы
и 1
next()
самые “умные” - “только один элемент, который ближайший и слева”; “только один элемент, который ближайший и справа”.1
prev()
На этом все.