jQuery - 获取元素的第二层父级

49

我试图获取一个<a>元素的父元素(祖父级别?),然后找到那个祖父级别,再在那个元素中找到一个<b>标签,并将其文本存储为变量以在页面其他地方发布。我一直尝试使用parent()函数,但没有成功。

这是我尝试过的代码:

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

我认为你不理解.get()的作用。 - Mathias Bynens
5
我绝对不是这样做的。我在 jQuery 中所做的一切都是猜测和检查...你能详细说明吗? - HandiworkNYC.com
因为parent()函数返回一个只有一个元素的集合,所以你可以直接在该集合上调用next函数。使用get(0)是隐式的。 - Bart van Heukelom
get.() 用于请求。 - alejnavab
7个回答

72

选择第二个父元素

parents(':eq(1)')

看起来更加平滑

parent().parent()

此外,您可能会发现

closest('ul')

更适合这份工作。


45

尝试:

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

2
请查看[链接]https://dev59.com/KUjSa4cB1Zd3GeqPEl75 以获取更快和更优美的方法,而不是使用.parent().parent()...。 - dzona

9

parents() 方法返回一个列表,因此这个方法可以这样使用:

$(this).parents()[1];

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

像这样的吗?

+1,.get(0)是不必要的,并返回不具有jQuery方法的DOM对象。在这里查看 - Annika Backstrom

1

只有一个父级,不需要使用 .get(0)

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

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

应该可以正常工作。

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


-1

尝试这个简单的实现:

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

将.parent()更改为.parents()

这适用于所有jQuery版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接