Как выбрать значение из следующего ряда через щенка?

Учитывая следующую таблицу:

<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>

Предполагая, что я не знаю фиксированную позицию значения, я бы хотел выбрать вторую строку, указав имя столбца 1-й строки, например:

  • Foo => 1
  • Бар => 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).

Вот решение с JQuery, но я ожидаю, что решение будет работать с pup команда.

Я проверил страницу документации Mozilla по селектору CSS, но не смог найти ничего подходящего.

1 ответ

Ваш селектор

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

представляет собой текст tr это непосредственно следует за td, как родной брат. Основываясь на структуре таблицы, trне братья и сестры tdс - они их родители.

щенок имеет свои собственные :parent-of() псевдокласс, перечисленный здесь, но этого будет недостаточно для ваших нужд, так как у вас нет возможности выбрать следующий ряд td в той же колонке, что и у вас. Селектор 4-х колонный комбинатор || делает именно то, что вы хотите, но это нигде не реализовано, и, конечно, не в щенка. Это не будет легко сделать с помощью любого инструмента командной строки, который в основном работает с селекторами CSS.

Другие вопросы по тегам