【问题标题】:How select a closest element (must not be a parent of this) using jQuery?如何使用 jQuery 选择最近的元素(不能是它的父元素)?
【发布时间】:2013-05-27 23:11:53
【问题描述】:

假设一个 html 文档:

<html>
  <head>
  </head>
  <body>
    <li id="eee">
      <li>aaa</li>
      <span>bbb</span>
        ...
          <div>
            <button id="ccc">ddd</button>
          </div>
        ...
    </li>
  </body>
</html>

使用$('#ccc').closest('li') jQuery 将选择&lt;li id="eee"&gt;...&lt;/li&gt; - &lt;button id="ccc"&gt; 的最近祖先。是否可以将&lt;li&gt;aaa&lt;/li&gt; 选择为与&lt;button id="ccc"&gt; 最接近的&lt;li&gt; 元素(因此,它不必是祖先,但足以成为一个祖先的兄弟姐妹) ?

更新:

有效的 html(特别是 @PSL 家伙,已经删除了他的 cmets):

<html>
  <head>
  </head>
  <body>
    <div id="eee">
      <div>aaa</div>
      <span>bbb</span>
      <ul>
        <li>fff</li>
        <li>
          <button id="ccc">ddd</button>
        </li>
      </ul>
    </li>
  </body>
</html>

如何在不使用parent() 函数的情况下获取&lt;div&gt;aaa&lt;/div&gt;,但使用smth。像trueClosest('div') 考虑兄弟姐妹,祖先和祖先的兄弟姐妹?

我只想知道,jQuery有没有这样的功能?

【问题讨论】:

  • ok,无效,但是chrome仍然可以在上面执行,所以可以理解我的意思。问题是概念性的:是否可以选择不是直接最近的祖先(父亲,(祖)父亲)而是任何祖先(叔叔,(祖)父亲的兄弟)的兄弟姐妹,匹配表达式(例如closest(expression)
  • 特别为@PSL 一个有效的 html 更新问题,如果不清楚原始形式,我想选择什么和如何选择以及我不想要什么和如何。

标签: jquery parent closest dom-traversal jquery-traversing


【解决方案1】:

这有帮助吗?
在为父母/兄弟姐妹遍历 DOM 时,我经常使用这种方法

$(this).parent().parent().find('#something')

【讨论】:

  • 但不幸的是我不知道,#something 来自this 有多深
【解决方案2】:

可以使用以下内容:

$('#startingElement').closest(':has(#desiredElement)').children('#desiredElement')

所以:找到最接近具有#desiredElement#startingElement 的元素,然后通过children(function); 获取它(它们)

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2013-04-16
    • 2019-05-15
    • 2021-06-20
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多