В настоящее время я пытаюсь найти родителя родительского элемента. У меня нажата ссылка в <td>, и я хочу получить объект <tr>.
<td>
<tr>
Почему не работает "$ (this) .parent (). Parent ()"? Что будет?
Спасибо Брендан
Редактировать: Кажется, ошибка в моем синтаксисе отбросила все это. "$ (this) .parent (). parent ()" на самом деле работает, но я в итоге пойду с $ (this) .closest ('tr') ", потому что это кажется наиболее эффективным решением.
Лучше всего было бы использовать closest:
closest
$(this).closest('tr');
Ознакомьтесь с документацией :
Ближайший работает, сначала посмотрев на текущий элемент, чтобы увидеть, соответствует ли он указанному выражению, если это так, он просто возвращает сам элемент. Если он не совпадает, он будет продолжать проходить вверх по документу, родитель за родителем, пока не будет найден элемент, соответствующий указанному выражению. Если соответствующий элемент не найден, он не будет возвращен.
должно работать. Вы также можете попробовать $ (this) .parents (tag), где tag - это тег, который вы хотите найти.
Например:
$(this).parents("tr:first")
Найдет ближайший tr "вверх по цепочке".
Это должно сработать ... вы можете попробовать
$(this).parents(':eq(1)');
.Parent (селектор) говорит, что получить всех предков, которые соответствуют селектору
и: eq (1) говорит, что найти один (нумерованный, ну и второй) элемент в списке
Этот фрагмент выполнялся для меня в прошлом:
$(this).parent().parent();
Опубликуйте некоторый код для нас, чтобы увидеть, может ли быть где-то еще проблема ...
также попробуйте
$(this).closest('div.classname').hide();
Если у вас есть какой-либо идентификатор / класс для родителя, вы можете использовать parent (), но это даст вам всем родителям вплоть до , если вы не отфильтруете () или не остановите его каким-либо другим способом, например
$(this).parents('.myClass');
Надеюсь, это кому-нибудь поможет:)
var getParentNode = function(elem, level) { level = level || 1; for (var i = 0; i < level; i++) { if (elem != null) { elem = elem.parentNode; } } return elem; }
Попробуйте обернуть $ (this) .parent () в объект jQuery, такой как $ ($ (this) .parent ()). Мне часто приходится это делать, чтобы убедиться, что у меня есть действительный объект jquery. Оттуда вы сможете получить доступ к родительскому родителю или, возможно, использовать prev ().
.closest() не всегда лучший вариант, особенно если у вас одинаковая конструкция элемента.
.closest()
<div> <div> <div> </div> </div> </div>
Вы можете сделать родителя родителя, и это очень просто:
var parent = $('.myDiv').parent(); var parentParent = $(parent).parent(); var parentParentParent = $(parentParent).parent();
и т.д.