对于给定的元素(可能嵌套在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问题类似但不同(我希望)。
答案 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,可以提供更准确的演示?