2013-06-13 2 views
2

В CSS, можно ли выбрать элемент, который не содержит другого элемента?Могу ли я выбрать элемент, который не содержит другого элемента?

Например:

<div> 
    <p>ABC</p> 
    <p> 
     <q>123</q> 
    </p> 
    <p>ABC</p> 
</div> 

Я хочу установить CSS для каждого p элемента, но не для элемента, который содержит q.

Возможно ли это?

+0

Хорошее место! К сожалению, некоторые элементы p содержат теги ссылок :( –

+0

Я восстановил свой ответ на основе JavaScript, так как это, вероятно, ваше единственное решение здесь. –

ответ

2

Если это то, что ваш HTML выглядит, вы можете использовать такой метод, как это ...

div p { 
    /* styles */ 
} 

div p q { 
    /* styles to *undo* previous styles, plus additional ones */ 
} 
+0

Видите ли, у меня есть поле, заданное на элементах p, которые я не хочу на p> q элемент. Мне также не удобно изменять или удалять элемент p, содержащий q. Как уже отмечалось выше, я мог бы использовать селектор p: empty? –

+0

@PatrickKeane. Если бы у них не было элементов или текстовых узлов, но они делают в вашем примере. – alex

0

У меня есть запас устанавливается на р элементов, которые я не хочу на р> q.

К сожалению, это невозможно с использованием CSS. Однако вы можете добиться этого с JavaScript (в приведенном ниже примере используется jQuery):

Вы можете комбинировать :not и :has:

$('p:not(:has(q))') 

С этим, то вы можете изменить CSS, используя .css():

$('p:not(:has(q))').css({ 
    'margin': '5px' 
}); 

Вот JSFiddle demo.

+2

это не было помечено jquery - я сделал ту же ошибку с моим ответом. – Pete

+0

jQuery был бы полезен, но я разрабатываю для мобильных устройств, и я оставляю столько работы скриптов на сервере насколько возможно. –

+0

@PatrickKeane, если вы оставляете работу на сервере, можете ли вы просто не добавлять отдельный класс к элементам с (или без) 'q' детьми? –

Смежные вопросы