Как получить прародителя прародителя div в html, используя jQuery

Есть ли лучший способ получить родительский родительский родитель ... как в 5 раз?

Так что вместо того, чтобы использовать это:

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

Я мог бы использовать что-то вроде этого:

$(this).goBacktoNthParent(5);

Является ли это возможным?

 Rory McCrossan05 февр. 2012 г., 16:03
Можете ли вы опубликовать свою структуру HTML.

Ответы на вопрос(6)

Ну можно попробовать

var parentControl = $('#yourcontrol').parent();
var grandParent = parentControl.parent();

function getNthParentOf(elem,i) {
    while(i>0) {
        elem = elem.parent();
        i--;
    }
    return elem;
}

var something = getNthParentOf($(this),5);

которые вы хотите получить, например,id или жеclass вы можете использовать$(this).closest("#grandparentElement")

попробуйте использовать .parentsUntil ()

рабочий пример:http://jsfiddle.net/ylokesh/wLhcA/

 westonplatter18 февр. 2013 г., 15:37
это самый полезный ответ. Спасибо!
Решение Вопроса
С помощью:eq() селектор

:eq() селектор позволяет вам нацелить элемент на основанный на нуле индекс набора, который был сопоставлен ...

$(this).

Примечание: используйте родительский (ые) селектор

Поскольку селектор основан на нуле, мы дали ему на единицу меньше целевого числа.

DEMO: http://jsfiddle.net/pmMFv/

С помощью.eq() метод

.eq() Метод по сути такой же, как и его селекторный аналог, что позволяет вам нацеливать элемент на основанный на нуле индекс набора, который был сопоставлен ...

$(this).parents().eq(4)

Примечание: используйте родительский (ые) селектор

DEMO: http://jsfiddle.net/pmMFv/2/

С помощьюparentNode в петле

Для максимальной производительности мы могли бы использовать.parentNode свойство элемента, и запустить его в цикле, обновляя переменную с самым новым родителем каждый раз ...

var el = this, i = 5;
while(i-- && (el = el.parentNode));

$(el)

DEMO: http://jsfiddle.net/pmMFv/1/

.родители функция перемещения в сочетании с:nth() селектор.

Так что результат будет примерно таким:

$(this).parents(':nth(5)'));

Обратите внимание: :nth() Индекс начинается с 0, поэтому для вашего случая это должно быть:

$(this).parents(':nth(4)'));
 user110692505 февр. 2012 г., 17:27
Кажется странным, что это работает, так как документы API не упоминают:nth только селектор:nth-child, Но я проверил, и это действительно работает.

Ваш ответ на вопрос