1

Moovweb SDK を使用しており、特定のクラス名を持つ隣接する要素の各グループに、作成した Tritium 関数を適用したいと考えています。html 要素の階層がフラットな場合、XPath で連続して表示される要素のグループのみを選択するにはどうすればよいですか?

すべての要素だけでなく、隣接する要素のグループを選択することが重要です。これは、最初の先行する<h2>.

<h2>Blah</h2>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<h2>Blah</h2>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
<h2>Blah</h2>
<span class="hi">hi</span>
<span class="hi">hi</span>
<span class="hi">hi</span>
4

1 に答える 1

1

これでうまくいくはずです:

$(".//h2") {
  %x = text()
  do_something("./following-sibling::span[preceding-sibling::h2[1][.='"+%x+"'] and contains(@class,'hi')]")
}

各 h2 のテキストを取得し、スパンの前の兄弟 h2 のテキストと比較します。したがって、異なる h2 の間のスパンのみが選択されます (do_something はカスタム Tritium 関数です)。

注: これは、h2 の間にある可能性がある他のタイプのノードをスキップします。

編集:変更しました

("./following-sibling::span[preceding-sibling::h2[1][.='"+%x+"']][@class='hi']")

("./following-sibling::span[preceding-sibling::h2[1][.='"+%x+"'] and contains(@class,'hi')]")

この例を参照してください: http://play.tritium.io/192d6bd9af3fcd1c26bb6487cb10c599eabbef83

ありがとうございます

于 2013-05-09T00:15:30.917 に答える