Родитель jQuery родителя

В настоящее время я пытаюсь найти родительский элемент родителя элемента. У меня есть ссылка, которая находится в <td>, и я хотел бы получить объект <tr>.

Почему wont "$ (this).parent(). parent()" работает? Что будет?

Спасибо,
Брендан

Изменить: Похоже, что в моем синтаксисе произошла ошибка. "$ (this).parent(). parent()" действительно работает, но я закончил с $(this).closest('tr') ", потому что это похоже на наиболее эффективное решение.

Ответ 1

Лучший способ, вероятно, будет использовать closest:

$(this).closest('tr');

Посмотрите документацию:

Ближайшие работы, сначала посмотрев на текущий элемент, чтобы увидеть, соответствует ли оно указанному выражению, если он просто возвращает сам элемент. Если он не совпадает, он будет продолжать перемещать документ, родительский по родительскому, до тех пор, пока не будет найден элемент, который соответствует указанному выражению. Если соответствующий элемент не найден, то ничего не будет возвращено.

Ответ 2

Он должен работать. Вы также можете попробовать $(this).parents(tag), где тег - это тег, который вы хотите найти.

Например:

$(this).parents("tr:first")

Найдет ближайший tr "вверх по цепочке".

Ответ 3

Это должно работать... вы можете попробовать

$(this).parents(':eq(1)');

.parents(selector) говорит, что все предки, которые соответствуют селектору

и: eq (1) говорит, что найти oneth (нулевой индекс, так что второй) элемент в списке

Ответ 4

Этот фрагмент для меня в прошлом выполнялся:

$(this).parent().parent(); 

Отправьте нам какой-нибудь код, чтобы узнать, есть ли где-нибудь другая проблема...

Ответ 5

попробуйте

$(this).closest('div.classname').hide();

Ответ 6

Если у вас есть какой-либо id/class для родителя, вы можете использовать parent(), но это даст вам всех родителей до <body> , если вы не фильтруете() или не остановите его каким-либо другим способом, например

$(this).parents('.myClass');

Надеюсь, это поможет кому-то:)

Ответ 7

Попробуйте обернуть $(this).parent() в объект jQuery, например $($ (this).parent()) Я часто нахожу необходимость сделать это, чтобы убедиться, что у меня есть действительный объект jquery. Оттуда вы сможете удержать родителя родителей или использовать превью(), возможно.

Ответ 8

var getParentNode = function(elem, level) { 
    level = level || 1; 
    for (var i = 0; i < level; i++) {
        if (elem != null) {
            elem = elem.parentNode; 
        }
    }
    return elem; 
}

Ответ 9

.closest() не всегда лучший вариант, особенно если у вас есть одна и та же конструкция элемента.

<div>
    <div>
        <div>
        </div>
    </div>
</div>

Вы можете сделать родительский элемент родителя, и это очень просто:

var parent = $('.myDiv').parent();
var parentParent = $(parent).parent();
var parentParentParent = $(parentParent).parent();

и др.