Для того чтобы найти родительский элемент(ы) выбранного узла, можно пользоваться похожими методами: .parent(), .parents(), .closest(). Для поиска соседних узлов пользуются .siblings().
Рассмотрим различия между ними:
Первый метод .parent([selector]) - находит родителя строго на один уровень вверх.
Пример: $(this).parent()
Для того чтобы получить родителя от родителя нужно применять цепочку вызовов (произвольной глубины): $(this).parent().parent()....
Второй метод .parents([selector]) - возвращает список всех родительских узлов, и, может содержать селектор, для уточнения набора родителей.
Пример: $(this).parents("li.test")
Третий метод .closest(selector, [context]) - возвращает первый ближайший родительский узел или же текущий узел - которые удовлетворяют условию в селекторе (селектор обязательный). Может принимать контекст для уточнения поиска (набор узлов заранее выбранных).
Основные отличия его от .parents():
- может вернуть и текущий узел
- обязательный селектор
- возвращает только первый элемент который попал под условие, поиск ведется тоже вверх по дереву.
Пример: $(this).closest("li.test") или $(this).closest("li.test", itemsList)
Ну и наконец последний метод .siblings([selector]) - возвращает набор соседних узлов (тех, которые имеют того же родителя что и текущий), может принимать уточняющий селектор.
Пример: $("ul li#id1").siblings()
В первых двух примерах вместо parent() использован parents()
ОтветитьУдалитьспасибо, опечатку исправил
ОтветитьУдалить>не имеет параметров.
ОтветитьУдалить.parent() можно использовать гибче, передавая в параметрах selector. $('div').parent('.yellow').css({'background-color':'#ff0'}).end().parent('.gray').css({'background-color':'#a9a'});
>$(this).parent().parent()...
или так - $(this).parent(2);
... а еще есть методы prev, prevAll,prevUntil и parentsUntil :)
спасибо, поправлю
ОтветитьУдалитьСПАСИБО!)) БОЛЬШОЕ))))
ОтветитьУдалитьОтлично. За siblings и не знал.
ОтветитьУдалитьКупите хомяка
ОтветитьУдалить