(Примечание: вопрос был отредактирован на следующий день после того, как его спросили, изменив вопрос примерно с parent
на примерно parents
[обратите внимание на множественное число]. Какой это имеет значение!)
Ваш оригинальный вопрос о parent
(в единственном числе) против closest
: parent
поднимается только на один уровень вверх. closest
начинается с текущего элемента (не только родителя) и продолжает поиск по предкам, пока не найдет совпадение (или не закончит предков).
Ваш обновленный вопрос о parents
(множественное число) против closest
: есть два различия:
Рассматривается ли текущий элемент (это с closest
, это не с parents
).
Завершается ли поиск при первом совпадении (для closest
, для parents
).
Из вашего оригинала вопроса:
Из тегов я мог использовать либо $ (this) .closest ('tr'); или $ (this) .parent ('tr');
Нет, вообще-то. $(this).parent('tr');
вернет пустой объект jQuery, потому что родительский элемент span
не соответствует селектору.
Из вашего обновленного вопроса:
Из тегов я мог использовать либо $ (this) .closest ('tr'); или $ (this) .parents ('tr');
Вы можете при условии , что ваш tr
также не входит в другой tr
(например, таблица, содержащая таблицу). Если это так, вы получите тот же результат. Но если у вас есть таблица в таблице, с parents
вы получите несколько tr
с ( все элементов-предков tr
).
Рассмотрим эту структуру:
<div class="wrapper">
<div class="inner">
<p>Testing <span>1 2 3</span></p>
</div>
</div>
Если мы подключим click
к span
, это то, что мы получим от трех соответствующих методов:
$(this).parent('div')
- Пустой объект jQuery, родительский элемент span
не является div
.
$(this).parents('div')
- объект jQuery с двумя div
s, div "inner" и "wrapper" (в этом порядке).
$(this).closest('div')
- объект jQuery с one div
, внутренним.
Вот результат, если мы подключим click
к span
и используем span
в качестве селектора:
$(this).parent('span')
- Пустой объект jQuery, родительский элемент span
не является span
.
$(this).parents('span')
- Пустой объект jQuery, у span
нет предка span
s.
$(this).closest('span')
- объект jQuery с span
, по которому щелкнули.