jQuery:按类型获取第一个最接近的“父级”?

夏期劇*_*期劇場 4 jquery parent-child closest

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

我用了:

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

但显然它不起作用。我也试过closest(),结果也是一样。

请问如何正确获取元素?

RAU*_*MAR 6

你应该把你的脚本写成

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

因为“li”是你的“a”元素的直接父元素,所以你也可以使用像

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


hal*_*bit 5

注意力!

\n\n

尽管给出的答案在这种(您的)情况下有效,但它们是错误的 - 关于这个问题:

\n\n

“与[任何]最亲近的父母”

\n\n

正确的是

\n\n
$element.parent().closest([what ever])\n
Run Code Online (Sandbox Code Playgroud)\n\n

closest()包括元素本身,只要它不是 [whatever],脚本也可以正常工作,但是 \xe2\x80\xa6

\n\n

这是许多脚本中的一个休眠错误,在开发后期的 DOM 设计更改之后就会出现。

\n\n

文档说closest()

\n\n
\n

对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先,获取与选择器匹配的第一个元素。

\n
\n\n

(我粗体)

\n