【问题标题】:jQuery : Get first closest "parent" by type?jQuery:按类型获取第一个最接近的“父级”?
【发布时间】:2019-09-07 00:58:26
【问题描述】:

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

请问如何正确获取元素?

【问题讨论】:

标签: jquery parent-child closest


【解决方案1】:

你应该把你的脚本写成

$('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');
});

【讨论】:

    【解决方案2】:

    注意!

    虽然给出的答案在这个(你的)案例中有效,但它们是错误的 - 关于这个问题:

    “与 [what ever] 的最近的父母

    正确的是

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

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

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

    文档说closest()

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

    (来自我的粗体)

    【讨论】:

      【解决方案3】:

      你可以使用closest(type),即:

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

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

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 2020-01-01
          • 1970-01-01
          • 2021-07-05
          • 2014-04-02
          • 1970-01-01
          • 1970-01-01
          • 2014-05-29
          • 2017-03-07
          • 1970-01-01
          相关资源
          最近更新 更多