选择最近的标题元素

时间:2016-02-11 13:11:18

标签: jquery

对于给定的元素(可能嵌套在DOM中),我试图选择它最近的&#39; (最近的)上面DOM中的标题元素<h1> - <h6>。由于标题不是祖先,jQuery&#39; closest是不够的。

为了澄清,该元素不太可能是标题的兄弟 - 例如下面代码的<span>

示例HTML:

<section>
    <h1>Heading<h1>
    <h2>Subheading</h2>
    <p>Lorem ipsum...</p>
    <ul>
      <li>
          <p> ... <span class="where-am-i">What heading am I under?</span> ... </p>
      </li>
    </p>
    <!-- Should return the H2 above -->
    <p>Lorem ipsum... </p>
</section>

this问题类似但不同(我希望)。

3 个答案:

答案 0 :(得分:1)

我有这个解决方案,但它很啰嗦。是否有更容易清理我的代码?

target = $(element)
    .parentsUntil("*:has('h1, h2, h3, h4, h5, h6')")  // element's ancestors until one which has children headings 
    .last()  // the ancestor that has sibling headings
    .prevUntil('h1, h2, h3, h4, h5, h6')   // previous siblings until the nearest heading
    .andSelf()  // in case the prevUntil() returns nothing
    .first()    // the first element after the heading
    .prev();    // the heading!

这是我的Plnkr

答案 1 :(得分:0)

您是否尝试过以下操作:

taget = $(element).closest(":header")

答案 2 :(得分:0)

$('.ancestorElement').closest().find().siblings('h1,h2,n3,h4,h5,h6');

如果提供HTML,可以提供更准确的演示?