Javascript 如何获得父母';s特定的下一个和上一个兄弟姐妹';jQuery中的孩子是谁?

Javascript 如何获得父母';s特定的下一个和上一个兄弟姐妹';jQuery中的孩子是谁?,javascript,jquery,html,css,dom,Javascript,Jquery,Html,Css,Dom,这是标记: <h2> <a href="link1.html">text One for link One</a> </h2> <p> More text related to link one</p> <h2> <a href="link2.html">text Two for link Two</a> </h2> <p> More text rela

这是标记:

<h2>
   <a href="link1.html">text One for link One</a>
</h2>
<p> More text related to link one</p>
<h2>
   <a href="link2.html">text Two for link Two</a>
</h2>
<p> More text related to link two</p>
<h2>
   <a href="link3.html">text Three for link Three</a>
</h2>
<p> More text related to link three</p>
。这是初始链接。我的理解是,
。最近的
将带我到父
h2
标签,从那里我可以到达下一个和上一个
h2
标签
.find
应该会让我找到链接,最后
.attr(href)
会让我找到属性

现在,上一个和下一个元素可能不存在。为什么我无法获得正确的链接?我得到的只是
未定义的
。例如,如果我在
link2.html
,我希望
prevLink
link1.html
,而
nextLink
link3.html

谢谢。

方法
.next()
/
.prev()
只选择紧跟其后或之前的元素,这意味着如果
h2
元素之间有一个同级
p
元素,它将不会选择任何内容

您可以改用
.nextAll()
/
.prevAll()
方法。然后链接
.first()
方法以获取集合中的第一个元素:

var prevLink = $(this).closest('h2').prevAll('h2').first().find('a').attr('href');
var nextLink = $(this).closest('h2').nextAll('h2').first().find('a').attr('href');
.next()
/
.prev()
方法仅选择紧跟其后或之前的元素,这意味着如果
h2
元素之间有一个同级
p
元素,则它不会选择任何内容

您可以改用
.nextAll()
/
.prevAll()
方法。然后链接
.first()
方法以获取集合中的第一个元素:

var prevLink = $(this).closest('h2').prevAll('h2').first().find('a').attr('href');
var nextLink = $(this).closest('h2').nextAll('h2').first().find('a').attr('href');

但是该网站说,
.next
获得匹配元素集中每个元素的紧随其后的同级元素。
h2
不是具有特定选择器的紧随其后的同级元素吗?我现在知道了。如果我错了,请纠正我
.next
。previous
不继续查找下一个特定的兄弟姐妹,除非它是匹配的,而只查找直接元素。@sanjeethigh-Correct。这些方法仅选择紧跟其后或之前的元素。如果它不是
h2
元素,则不选择任何内容。该方法不会一直寻找下一个
h2
元素。这就是为什么要使用
.nextAll()
.prevAll()
。这些方法将选择以下或之前的所有
h2
元素和
.first()
将选择第一个。但是网站上说
。next
获取匹配元素集中每个元素的紧随其后的同级。
h2
不是具有特定选择器的紧随其后的同级吗?我现在就知道了。如果我错了,请纠正我
.next
。previous
不继续查找下一个特定的兄弟姐妹,除非它是匹配的,而只查找直接元素。@sanjeethigh-Correct。这些方法仅选择紧跟其后或之前的元素。如果它不是
h2
元素,则不选择任何内容。该方法不会一直寻找下一个
h2
元素。这就是为什么要使用
.nextAll()
.prevAll()
。这些方法将选择以下或之前的所有
h2
元素,
.first()
将选择第一个元素。