Разница между функциями jQuery parent (), parent () и closest ()
186
Некоторое время я использую jQuery. Я хотел использовать parent()селектор. Еще я придумал closest()селектор. Не нашел между ними никакой разницы. Есть ли? Если да, то что?
В чем разница между parent(), parents()и closest()?
parent :::: перемещается на 1 шаг назад к родительскому объекту .... :::: parent ::: дает список всех родителей .... :::: ближайший ::: перемещается обратно через братьев и сестер, пока не найдет условие и вернуть только первое. Все это можно изменить с помощью дополнительных селекторов
Мухаммад Умер
Ответы:
178
closest()выбирает первый элемент, соответствующий селектору, вверх от дерева DOM. Начинается с текущего элемента и идет вверх.
parent() выбирает один элемент выше (на один уровень выше) дерева DOM.
parents()Метод аналогичен, parent()но выбирает все совпадающие элементы в дереве DOM. Начинается с родительского элемента и продолжается вверх.
Разве это не .parents()(вместо .parent()) получение всех элементов?
acdcjunior
68
В этом ответе отсутствует важный момент: «Ближайший» начинается с текущего элемента и перемещается вверх, тогда как «Родители» начинается с родительского элемента и перемещается вверх.
В .parents () и .closest () методы сходны в том , что они оба траверс вверх по дереву DOM. Различия между ними, хотя и тонкие, но существенные:
.closest ()
Начинается с текущего элемента
Перемещается вверх по дереву DOM, пока не найдет совпадение для предоставленного селектора
Возвращенный объект jQuery содержит ноль или один элемент
.родители()
Начинается с родительского элемента
Перемещается вверх по дереву DOM к корневому элементу документа, добавляя каждый элемент-предок во временную коллекцию; затем он фильтрует эту коллекцию на основе селектора, если он указан
Возвращенный объект jQuery содержит ноль, один или несколько элементов
.parent ()
Учитывая объект jQuery, представляющий набор элементов DOM, метод .parent () позволяет нам искать родителей этих элементов в дереве DOM и создавать новый объект jQuery из соответствующих элементов.
Примечание . Методы .parents () и .parent () похожи, за исключением того, что последний перемещается только на один уровень вверх по дереву DOM. Кроме того, метод $ ("html"). Parent () возвращает набор, содержащий документ, тогда как $ ("html"). Parent () возвращает пустой набор.
На самом деле он спросил о родителях (), а не о родителях ().
ScubaSteve
2
@ScubaSteve: Пожалуйста, проверьте ответ еще раз с помощью Note.
Naveed
1
The .parents() and .parent() methods are similar, except that the latter only travels a single level up the DOM tree. Also, $("html").parent() method returns a set containing document whereas $("html").parents() returns an empty set.
Naveed
1
@ScubaSteve, да, но вопрос родителей () интереснее.
Пол Дрейпер,
16
Различия между ними, хотя и тонкие, но существенные:
Перемещается вверх по дереву DOM к корневому элементу документа, добавляя каждый элемент-предок во временную коллекцию; затем он фильтрует эту коллекцию на основе селектора, если он указан
Возвращенный объект jQuery содержит ноль, один или несколько элементов
Есть разница между обоими $(this).closest('div')и$(this).parents('div').eq(0)
В основном closestначинайте сопоставление элемента с текущего элемента, тогда как parentsначинайте сопоставление элементов с родительского (на один уровень выше текущего элемента)
parent()метод возвращает прямой родительский элемент выбранного. Этот метод проходит только один уровень вверх по дереву DOM.
parents()Метод позволяет нам искать предков этих элементов в дереве DOM. Начните с данного селектора и двигайтесь вверх.
The **.parents()** and **.parent()** methods are almost similar, except that the latter only travels a single level up the DOM tree. Also, **$( "html" ).parent()** method returns a set containing document whereas **$( "html" ).parents()** returns an empty set.
[closest()][3]method returns the first ancestor of the selected element.An ancestor is a parent, grandparent, great-grandparent, and so on.
This method traverse upwards from the current element, all the way up to the document's root element (<html>), to find the first ancestor of DOM elements.
According to docs:
**closest()** method is similar to **parents()**, in that they both traverse up the DOM tree. The differences are as follows:
**closest()**
Begins with the current element
Travels up the DOM tree and returns the first (single) ancestor that matches the passed expression
The returned jQuery object contains zero or one element
**parents()**
Begins with the parent element
Travels up the DOM tree and returns all ancestors that matches the passed expression
The returned jQuery object contains zero or more than one element
Ответы:
источник
.parents()
(вместо.parent()
) получение всех элементов?из http://api.jquery.com/closest/
Вот связанные темы:
В чем разница между .closest () и .parents ('selector')?
https://stackoverflow.com/a/2200805/149206
источник
Note
.The .parents() and .parent() methods are similar, except that the latter only travels a single level up the DOM tree. Also, $("html").parent() method returns a set containing document whereas $("html").parents() returns an empty set.
Различия между ними, хотя и тонкие, но существенные:
Из документации jQuery
источник
Есть разница между обоими
$(this).closest('div')
и$(this).parents('div').eq(0)
В основном
closest
начинайте сопоставление элемента с текущего элемента, тогда какparents
начинайте сопоставление элементов с родительского (на один уровень выше текущего элемента)See http://jsfiddle.net/imrankabir/c1jhocre/1/
источник
parent()
метод возвращает прямой родительский элемент выбранного. Этот метод проходит только один уровень вверх по дереву DOM.parents()
Метод позволяет нам искать предков этих элементов в дереве DOM. Начните с данного селектора и двигайтесь вверх.The **.parents()** and **.parent()** methods are almost similar, except that the latter only travels a single level up the DOM tree. Also, **$( "html" ).parent()** method returns a set containing document whereas **$( "html" ).parents()** returns an empty set. [closest()][3]method returns the first ancestor of the selected element.An ancestor is a parent, grandparent, great-grandparent, and so on. This method traverse upwards from the current element, all the way up to the document's root element (<html>), to find the first ancestor of DOM elements. According to docs: **closest()** method is similar to **parents()**, in that they both traverse up the DOM tree. The differences are as follows: **closest()** Begins with the current element Travels up the DOM tree and returns the first (single) ancestor that matches the passed expression The returned jQuery object contains zero or one element **parents()** Begins with the parent element Travels up the DOM tree and returns all ancestors that matches the passed expression The returned jQuery object contains zero or more than one element
источник
$(this).closest('div')
такое же, как$(this).parents('div').eq(0)
.источник