Есть ли селектор или обходной путь, чтобы выбрать любой элемент без детей - PullRequest
4 голосов
/ 18 мая 2010

Глядя на спецификации CSS3, я не могу найти способ выбрать элемент, у которого нет дочерних элементов.

Позвольте мне объяснить.

<body>
 <h1>Main Page</h1>
 <div id="main">
  <div class="post">
   <h2>Article 1</h1>
   <p>some text</p>
  </div>
  <div class="post">
   <h2>Article 2</h1>
   <p>some text</p>
  </div>
 </div>
</body>

Я ищу синтаксис CSS для выбора h1, двух h2 и двух p. Способ выделить на любой странице все элементы без дочерних элементов. Любое предложение?

Извините, я забыл добавить «пустую» часть, я на самом деле уже использую селектор *: empty, но он не работает ни для одного тега, у которого nodeText является дочерним Таким образом, он работает для любого входа, изображения, объекта, но не для h2, h1 или любого другого.

Ответы [ 3 ]

1 голос
/ 08 июня 2010

Поскольку текстовый узел также является узлом для CSS, вы не можете сделать это с помощью любого селектора CSS. Делая это с JavaScript, вы должны сначала выбрать все узлы только с одним дочерним узлом, а затем проверить, является ли это только текстовым узлом.

0 голосов
/ 08 июня 2010

Я не думаю, что это можно сделать только с помощью CSS. Вам придется пройти через все элементы, проверяющие ложное возвращение на hasChildNodes(). Это было бы небрежно, а не то, что я бы порекомендовал.

0 голосов
/ 18 мая 2010

Используйте псевдо :empty, чтобы сделать трюк, например. чтобы выбрать ВСЕ элементы без дочерних элементов (включая текстовые узлы ... ничто ):

*:empty
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...