Как выбрать значение из следующего ряда через щенка?
Учитывая следующую таблицу:
<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.