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

时间:2016-08-01 11:04:53

标签: jquery parent-child closest

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

<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(),结果也一样。

如何妥善获取元素?

4 个答案:

答案 0 :(得分:3)

您应该将脚本编写为

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

因为&#34; li&#34;是你&#34; a&#34;的直接父母。元素,所以你也可以使用像

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

答案 1 :(得分:2)

您可以使用git push,即:

git pull

小提琴:https://jsfiddle.net/f14vjLmc/

答案 2 :(得分:2)

答案 3 :(得分:0)

注意!

尽管给出的答案适用于这种情况(您的情况),但它们是错误的-关于问题:

最亲近的父母和[everever]]”

正确是

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

closest()包括元素本身,并且只要它不是[everever],脚本就可以正常工作,但是…

在许多脚本中这是一个微不足道的错误,它在DOM之后显示-在开发的后期进行设计更改。

文档说closest()

  

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

(对我大胆)