【问题标题】:Find the first element with a certain class/tag name after another element在另一个元素之后找到具有特定类/标签名称的第一个元素
【发布时间】:2016-09-04 04:30:53
【问题描述】:

我有一个如下所示的网页:

<h1 id="a">A</h1>
contents
<p class="paragraph">stuff</p>
more contents

<h1 id="b">B</h1>
contents
<p class="paragraph">stuff I need</p>
more contents

<h1 id="c">C</h1>
contents
<p class="paragraph">stuff</p>
more contents

et cetera

如何在带有id="b" 的标题后选择&lt;p class="paragraph"&gt; 标签(内容为“我需要的东西”)?

我曾考虑在$("h1") 中找到&lt;h1 id="b"&gt;B&lt;/h1&gt; 的索引,然后在$("p.paragraph") 中访问该索引,但这不适用于我的具体情况。

编辑:一个更好的例子:https://jsfiddle.net/n7zstmw8/

【问题讨论】:

  • 为了正确起见——我建议不要如此随意地使用 h1——

    标题的想法是它是页面上最重要的一个标题。如果每个 h1 在其自己的部分中,则可以有多个 h1 - 这样它就成为该部分中最重要的标题 - 但是使用现有的代码结构,如果你有一个 h1(例如

    Stuff /h1>),然后您将有一个

    用于三个选项中的每一个。
  • @gavgrif 我完全同意你的看法。这只是我的页面外观的模型。实际上,它甚至不是我的页面,而是来自我试图抓取的另一个网站(否则我会分配更多的类和 ID,这样就不会出现这个问题了)。

标签: javascript jquery html jquery-selectors


【解决方案1】:

选择是:

$('#b + .paragraph')

Next Adjacent Selector (“prev + next”):选择所有匹配“next”且紧跟在同级“prev”之前的所有下一个元素。

sn-p:

$(function () {
  console.log($('#b + .paragraph').text());
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<h1 id="a">A</h1>
contents
<p class="paragraph">stuff</p>
more contents

<h1 id="b">B</h1>
contents
<p class="paragraph">stuff I need</p>
more contents

<h1 id="c">C</h1>
contents
<p class="paragraph">stuff</p>
more contents

如果下一个元素不相邻,则可以使用 nextAll:

$(function () {
  console.log($('#b').nextAll('.paragraph:first').text());
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<h1 id="a">A</h1>
<span class="inbetween">In between stuff</span>
<p class="paragraph">stuff</p>
<span class="inbetween">In between stuff</span>

<h1 id="b">B</h1>
<span class="inbetween">In between stuff</span>
<div class="moreinbetween">
    More stuff
</div>
<p class="paragraph">stuff I need</p>
<span class="inbetween">In between stuff</span>

<h1 id="c">C</h1>
<span class="inbetween">In between stuff</span>
<p class="paragraph">stuff</p>
<span class="inbetween">In between stuff</span>

【讨论】:

  • "紧接在前面" 但是如果我在 &lt;h1&gt;&lt;p&gt; 之间有标签怎么办(我有)?
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
相关资源
最近更新 更多