Как выбрать значение из следующего ряда через щенка? - PullRequest
1 голос
/ 22 марта 2019

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

<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
  • 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).

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

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

1 Ответ

1 голос
/ 22 марта 2019

Ваш селектор

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

представляет текст tr, который непосредственно следует за td, в качестве родственного брата. Исходя из структуры таблицы, tr s не являются братьями и сестрами td s - они являются их родителями.

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

...