jQuery :按类型获取第一个最接近的 "parent"?

jQuery : Get first closest "parent" by type?

当我单击 a 元素时,我需要获取第一个最近(最近)li 父元素的 id

<ul>
    <li id="wrong1">
        <ul>
          <li id="p1">
            <a href="" class='btn'></a>
          </li>
          <li id="p2">
            <a href="" class='btn'>Click here!</a>
          </li>
          <li id="p3">
            <a href="" class='btn'></a>
          </li>
        </ul>
    </li>
    <li id="wrong2"></li>
</ul>

当我点击 Click here! 时,我应该得到 li#p2 元素。

我用过:

$('a.btn').click(function(e) {
    var GotIt = $(this).parents().find('li').attr('id');
});

但显然没有用。我也试过 closest() 也是同样的结果。

请问如何正确获取元素?

您应该将脚本编写为

$('a.btn').click(function(e) {
    var GotIt = $(this).closest('li').attr('id');
});

因为 "li" 是你的 "a" 元素的直接父元素,所以你也可以使用 like

$('a.btn').click(function(e) {
    var GotIt = $(this).parent().attr('id');
});

可以使用closest(type),即:

$('a.btn').click(function(e) {
    var li = $(this).closest("li");
    alert(li.attr("id"))
});

Fiddle: https://jsfiddle.net/f14vjLmc/

试试这个 closest() JQuery Method

注意!

虽然给定的答案适用于这个(你的)案例,但它们是错误的 - 关于问题:

"the closest parent with [what ever]"

正确的是

$element.parent().closest([what ever])

closest() 包含元素本身,只要它不是 [what ever],脚本也可以正常工作,但是......

这是许多脚本中的潜在错误,在 DOM 之后出现 - 在开发后期进行设计更改。

文档说 closest():

For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.

(我加粗)