Небольшое отступление - в одних постах я говорю о функциях jQuery, в других - о методах jQuery. Где же правильно? В принципе, и то и то правильно. И функция jQuery, и метод jQuery. Но последний вариант более правильный, поэтому в дальнейшем буду “обзывать” подобные вещи методами.
Метод
предназначен для выборки соседних элементов. С помощью этого метода выбираются все элементы, находящиеся на одном уровне DOM с элементом, служащим в качестве критерия отбора.1
.siblings()
Метод имеет один вариант использования (синтаксис):
Все очень похоже на то, как эти дела обстоят в CSS, но приведу простой пример для иллюстрации:
… читается это так - добавить класс
для всех элементов, соседних (sibling) с элементом, имеющим класс 1
.selected
. То есть, класс 1
.proba
будет добавлен всем элементам 1
.selected
, так как они находятся на одном уровне DOM с элементом 1
a
и являются соседними по отношению к нему.1
.proba
По умолчанию можно не передавать методу
аргумент в виде селектора - 1
.siblings()
, так как подразумеваются элементы, которые являются соседними в текущей HTML-разметке. Но можно передавать методу в качестве аргумента имя класса - 1
.siblings('a')
; или элемент с именем класса (идентификатора) - 1
.siblings('.test__link')
.1
.siblings('a.test__link')
Краткие примеры использования метода
, взятые с ресурса jQuery Page2Page:1
.siblings()
- найдет элементы, которые имеют общего родителя с элементом, обладающим идентификатором1
$("#block").siblings()
1
#block
- найдет элементы, которые имеют общих родителей с элементами класса1
$(".lBlock").siblings()
1
.lBlock
- найдет элементы класса1
$(".lBlock").siblings(".cont")
, которые имеют общих родителей с элементами класса1
.cont
1
.lBlock
Важный момент - в этом случае класс
не будет добавлен к элементу 1
.selected
. Другими словами, в методе 1
.proba
к элементу, служащему в качестве критерия, не применяются действия этого метода.1
.siblings()
Чтобы было еще понятнее, о чем идет речь, представлю ниже результат работы описанного выше javascript-кода:
Метод
прост и понятен. Единственным “подводным камнем” при работе с ним является такой момент - нужно быть внимательным с уровнями вложения элементов. Другими словами, в дереве DOM элементы не расположены на одном уровне (не являются sibling), однако разработчик упрямо пытается применить к этим элементам метод 1
.siblings()
. И потом сильно недоумевает, почему ничего не работает, хотя код то правильный!1
.sibling()
Приведу простой пример такой ошибки, с которой один раз сам столкнулся. Здесь пример кристально ясный и понятный, однако на деле все было не так прозрачно (в совокупности с другим кодом):
Представленный выше javascript-код работать не будет, так как элементы
(а код был сделан в расчете на эти элементы) соседними (siblings) не являются. Это хорошо заметно, если внимательно рассмотреть HTML-код примера.1
a
Вот, в принципе, и все, что можно сказать о методе
.1
.siblings()
На этом все.