Как найти n-го родителя элемента, используя jquery - PullRequest
40 голосов
/ 18 ноября 2011

Я хочу найти n-й родительский элемент данного элемента и получить доступ к атрибутам родительского элемента.

<div id='parent1'><br/>
  <div id='parent2'><br/>
       <span><p id='element1'>Test</p></span><br/>
  </div><br/>
  <div id='parent3'><br/>
       <span><p id='element2'>Test</p></span><br/>
  </div><br/>
</div>

Я хочу получить доступ к 3-му родительскому элементу element1 без использования

$('#element1').parent().parent().parent()

Любая помощь будет оценена

Ответы [ 4 ]

58 голосов
/ 18 ноября 2011

Вы можете использовать .parents() и .eq():

$('#element1').parents().eq(2);

http://jsfiddle.net/infernalbadger/4YmYt/

6 голосов
/ 16 октября 2014

parent () возвращает список, поэтому это работает:

$('#element1').parents()[2];
6 голосов
/ 18 ноября 2011

Вы можете сделать небольшой плагин, чтобы позаботиться об этом:

$.fn.nthParent = function(n){
    var p = this;
    for(var i=0;i<n;i++)
        p = p.parent();
    return p;
}

и затем используйте его как:

$('#element1').nthParent(3);
5 голосов
/ 18 ноября 2011

использование:

$('#element1').closest('#parent1');
...