2010-04-20 2 views
36

Я пытаюсь получить Родитель < а> родительского элемента (прародитель?). Я хочу найти этого дедушку, а затем найти тег < b> в этом элементе, а затем сохранить этот текст как переменную, опубликованную в другом месте на странице. Я пытался использовать функцию parent(), но безуспешно.JQuery - Получение второго уровня родительского элемента

Вот код, который я попробовал:

$('.mixPlayCell a').click(function() { 
     var title = $(this).parent().get(0).parent().get(0).text(); 
     alert(title); 
    }); 
+0

Я не думаю, что вы понимаете, что такое '.get()' делает. –

+4

Я, безусловно, не знаю. Все, что я делаю в jQuery, это угадать и проверить ... Не могли бы вы уточнить? –

+0

Поскольку 'parent()' возвращает коллекцию только с одним элементом, вы можете напрямую вызвать следующую функцию. 'Get (0)' неявно. –

ответ

37

попробовать:

$(this).parent().parent().find('.thingtofind').text(); 
+0

Я думал, что я уже пробовал это, но, наверное, нет! Отлично работает. –

+1

Посмотрите на [link] http://stackoverflow.com/questions/1108971/jquery-parent-select-more-efficent-way для более быстрого и элегантного aproach, вместо этого используя .parent(). Parent() .... – dzona

2
$('.mixPlayCell a').click(function() { 
    elem = $(this).parent().parent(); 
    title = $("tag selector goes here",elem).html(); 
}); 

Что-то вроде этого?

+0

+1, .get (0) не требуется и возвращает объект DOM, который не имеет методов jQuery. [См. Здесь] (http://static.bwerp.net/~adam/2010/04/20/parent.html). –

0
$(this).parent().parent().find('mytag').text() 

Должно работать нормально.

Вы можете использовать любой селектор в методе find. Если вам просто нужно искать в непосредственных детях элемента прародителя, вы можете также использовать $.children вместо find, который ищет во всех детях элемента.

1

Существует только один из родителей, нет необходимости .get (0)

var title = $(this).parent().parent().find("whateveryouwant").html(); 
46

Для выбора второго родителя

parents(':eq(1)') 

выглядит более гладкой, чем

parent().parent() 

Кроме того, вам может обнаружить, что

closest('ul') 

подходит для работы лучше.

-1

Попробуйте это для простой реализации:

$('.mixPlayCell a').click(function() { 
    var title = $(this).parents().text(); 
    alert(title); 
}); 

просто изменил .parent() с одним .parents()

это работает для каждой версии JQuery.

Смежные вопросы