如何通过小狗从下一行中选择价值?

问题描述 投票:1回答:1

鉴于下表:

<table>
  <tr>
    <td>Foo</td>
    <td>Bar</td>
    <td>Buzz</td>
  </tr>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>5</td>
    <td>6</td>
  </tr>
</table>

假设我不知道值的固定位置,我想通过给出第一行列名来选择第二行,例如:

  • Foo => 1
  • Bar => 2
  • Buzz => 3

目前我知道如何获取列的名称(第1行):

$ pup -f table.html 'td:contains("Foo") text{}'
Foo

我知道如何通过以下方式返回下一栏:

$ pup -f table.html 'td:contains("Foo") + td text{}'
Bar

我期望得到下一行:

$ pup -f table.html 'td:contains("Foo") + tr text{}'

但它没有返回任何东西(我希望是1)。

这是the solution with jQuery,但我希望该解决方案能够与pup命令一起使用。

我检查了Mozilla's CSS selector docs page,但我找不到合适的东西。

html html-table css-selectors pup
1个回答
1
投票

你的选择器

td:contains("Foo") + tr text{}

代表tr的文本,直接跟随td,作为兄弟姐妹。根据表结构,trs不是tds的兄弟姐妹 - 他们是他们的父母。

pup有自己的:parent-of()伪类,列出here,但这对你的需求来说是不够的,因为你没有办法在你所拥有的同一列中选择下一行的td。选择器4的列组合器||完全符合您的要求,但它并没有在任何地方实现,当然也没有在小狗中实现。使用主要适用于CSS选择器的任何命令行工具来完成此操作并非易事。

© www.soinside.com 2019 - 2024. All rights reserved.