2

我正在使用 Moovweb SDK 来转换网站,并且我有很多页面的内容与这种格式匹配。有一个<h2>开始一个部分,并且该部分具有随机数量的<p>元素。

由于这些元素没有属性,我无法按类或 id 进行选择。我想<p>在每个部分中选择第一个和最后一个。我不想手动选择喜欢$('./p[1]')$('./p[4]')...有没有办法在每个元素之前和之后选择元素<h2>

<div>
  <h2>This is a heading</h2>
  <p>Here is some content</p>
  <p>Meh</p>
  <p>Here's another paragraph</p>
  <p>Important sentence because it's the last one</p>
  <h2>Here's a subheading</h2>
  <p>Topic sentence</p>
  <p>Bleh bleh bleh</p>
  <p>Hurray, this fragment.</p>
  <p>May the Force be with you</p>
  <p>Moovweb rocks!</p>
  <h2>New heading</h2>
  <p>More awesome content here</p>
  <p>Why is there so much stuff?</p>
  <h2>The end</h2>
  <p>Or is it?</p>
</div>
4

1 回答 1

4

您可以使用XPath 中的preceding-siblingand选择器来执行此操作!following-sibling

代码看起来像这样:

$("./div"){
  $("./h2") {
    $("following-sibling::p[1]") { # first p after h2
      # do stuff
    }
    $("preceding-sibling::p[1]") { # first p before h2
      # do stuff
    }
  }
}

请参阅我在氚测试仪中创建的这个示例:http: //tester.tritium.io/dc25a419ac15fad70fba6fd3d3a9b512cb8430e8

于 2013-06-25T01:41:41.970 回答