我正在尝试使用 jQuery 来匹配一系列不相邻的兄弟姐妹,但似乎无法正确选择选择器。
这是问题所在:
我有一个带有段落和标题的文档。标题具有类名,例如.one
、.two
、.three
和.five
。
我想匹配以特定模式显示的所有标题。例如:.one
, .one
, .three
, .five
。无论每个标题之间有多少其他标题,我都想匹配这个序列。
这是陈述目标的另一种方式。从文档的顶部开始,我想:
- 找到
.one
出现的第一个标题。 - 然后匹配下一个
.one
标题 - 然后匹配下一个
.three
标题 - 然后匹配下一个
.five
标题
重复
- 查找下一个
.one
标题 - 然后匹配下一个
.one
标题 - 然后匹配下一个
.three
标题 - 然后匹配下一个
.five
标题
再次重复直到文档结束。
我非常接近使用nextAll()
:
headings = $('.one').nextAll('.one, .three, .five').addBack();
headings.css('color', 'red');
这是HTML:
<h1 class="one">One</h1><!-- Select this -->
<p class="a">One</p>
<p class="b">One</p>
<p class="c">One</p>
<p class="d">One</p>
<h1 class="one">One</h1><!-- Select this -->
<p class="a">a</p>
<p class="b">b</p>
<h1 class="three">Three</h1><!-- Select this -->
<p class="a">a</p>
<p class="b">b</p>
<p class="c">c</p>
<h1 class="one">One</h1><!-- DON'T SELECT THIS -->
<p class="a">a</p>
<h1 class="four">Three</h1>
<p class="a">a</p>
<h1 class="five">Five</h1><!-- Select this -->
<p class="a">a</p>
<p class="b">b</p>
<p class="c">c</p>
<p class="d">d</p>
问题是它匹配 的每个实例.one
,而我只想要前两个,而不是第三个。有没有办法做到这一点?
这是我尝试过的JS小提琴: