Выберите td наивысшего уровня в структуре вложенных таблиц с помощью jQuery

0

Я пытаюсь выбрать самый высокий уровень 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 внутри вложенной таблицы. Спасибо!

  • 0
    Вам нужно будет найти что-то уникальное в таблице переноса, чтобы нацелиться на нее, например, на родительский элемент, идентификатор, индекс и т. Д.
  • 0
    table > tbody > tr > td будет работать универсально и, вероятно, будет самым быстрым решением. Почему ты против?
Показать ещё 2 комментария
Теги:
dom
jquery-selectors

1 ответ

1
Лучший ответ

Как я выразился в своем комментарии, я все сторонник table > tbody > tr > td, но в качестве альтернативы вы можете использовать

td:not(td td)

Это выбирает все td элементы, которые не являются потомками элемента td. Но учтите, что это будет работать только с jQuery, потому что вы обычно не можете использовать сложные селекторы с :not.

Кроме того, используйте метод .not:

$('td').not('td td')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню