Я пытаюсь выбрать самый высокий уровень td
во вложенной структуре таблицы, подобной этой (внутри первого уровня td
есть больше таблиц с большим количеством td
которые не следует выбирать
<table>
<tr>
<td> <!-- this is what I want to select -->
<table /> <!-- more td inside that I don't want to select -->
</td>
</tr>
<tr>
<td> <!-- this is what I want to select -->
<table /> <!-- more td inside that I don't want to select -->
</td>
</tr>
</table>
Для выбора нужного td
было бы просто: table > tr > td
. Однако может быть table
с тегами tbody
:
<table>
<tbody>
<tr>
<td> <!-- this is what I want to select -->
<table /> <!-- more td inside that I don't want to select -->
</td>
</tr>
<tr>
<td> <!-- this is what I want to select -->
<table /> <!-- more td inside that I don't want to select -->
</td>
</tr>
</tbody>
</table>
Это тоже было бы легко: table > tbody > tr > td
.
Как я могу найти легкое выражение, которое не зависит от селектора >
child и работает повсеместно?
Что-то вроде table tr > td
(который, очевидно, не работал бы, так как он выбирает td
внутри вложенной таблицы. Спасибо!
Как я выразился в своем комментарии, я все сторонник table > tbody > tr > td
, но в качестве альтернативы вы можете использовать
td:not(td td)
Это выбирает все td
элементы, которые не являются потомками элемента td
. Но учтите, что это будет работать только с jQuery, потому что вы обычно не можете использовать сложные селекторы с :not
.
Кроме того, используйте метод .not
:
$('td').not('td td')
table > tbody > tr > td
будет работать универсально и, вероятно, будет самым быстрым решением. Почему ты против?