2010-04-20 103 views
36

我正在尝试检索元素的父项(祖父项?)的父项。我想找到祖父母,然后在该元素中找到一个< b>标记,然后将该文本存储为变量以在页面上的其他地方发布。我一直在尝试使用parent()函数,但没有成功。jQuery - 获取元素的二级父项

这是我试过的代码:

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

,我不认为你明白'获得()'一样。 – 2010-04-20 13:13:37

+4

我当然没有。我在jQuery中做的每件事都是猜测和检查......你能详细说明一下吗? – 2010-04-20 16:15:28

+0

因为'parent()'返回一个只有一个元素的集合,所以你可以直接调用下一个函数。 “get(0)”是隐含的。 – 2010-10-13 09:12:43

回答

37

尝试:

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

我以为我已经尝试过,但我猜不是!很好,谢谢。 – 2010-04-20 13:14:01

+1

看看[链接] http://stackoverflow.com/questions/1108971/jquery-parent-select-more-efficent-way更快,更优雅的aproach改为使用.parent()。parent().... – dzona 2012-09-22 16:52:19

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

像这样的事情?

+0

+1,.get(0)是不必要的,并返回没有jQuery方法的DOM对象。 [见这里](http://static.bwerp.net/~adam/2010/04/20/parent.html)。 – 2010-04-20 13:16:44

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

应该工作得很好。

您可以使用find方法中的任何选择器。如果您只需要在祖父母的元素的直接子女中进行搜索,则还可以使用$.children而不是find来搜索所有元素的子元素。

1

只有1父,无需获得(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()的一个。家长()

这是每一个jQuery的版本的作品。