CSS селектор для самых внутренних таблиц? - PullRequest
4 голосов
/ 05 марта 2010

Есть ли способ выбрать только самые внутренние таблицы? То есть те, которые не содержат больше таблиц внутри них?

Я знаю, что могу фильтровать по element.getElementsByTagName("table").length == 0, мне просто интересно, есть ли более элегантное решение.

Ответы [ 4 ]

12 голосов
/ 05 марта 2010

С чистым CSS вы не можете сделать это.С помощью jQuery (которым помечен ваш вопрос) вы можете:

$("table:not(:has(table))")...

выбирать таблицы без дочерних таблиц.

Селектор :has() находит элементы элементовкоторые имеют конкретного потомка.:not() инвертирует выбор к тем, у которых нет этого конкретного потомка.

2 голосов
/ 21 ноября 2012

Для тех, кто использует селекторы CSS в nokogiri , :has() может быть повреждено, поэтому :not(:has(...)) не будет работать. Вы захотите использовать xpath или другим способом. См. : есть псевдокласс CSS в Nokogiri .

0 голосов
/ 05 марта 2010

У вас есть возможность добавить атрибут class="innermost" в таблицу?Таким образом, это намного проще.

0 голосов
/ 05 марта 2010

Насколько я знаю, не существует селектора CSS, который бы соответствовал вашим потребностям. Однако есть несколько вариантов:

  1. Используйте класс или идентификатор, чтобы пометить таблицу, чтобы вы могли выбрать ее.
  2. Используйте JavaScript для навигации по дереву DOM.
  3. Используйте библиотеку JavaScript для выбора элементов. Поскольку вы пометили свой OP тегом jQuery, я бы предложил вам пойти на это.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...