2013-06-13 377 views
2

在CSS中,我可以選擇一個不包含其他元素的元素嗎?我可以選擇一個不包含其他元素的元素嗎?

例如:

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

我想爲每個p元素的CSS,而不是包含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對於我來說,改變或刪除包含q的p元素也不方便,如上所述,我可以使用p:empty selector? –

+0

@PatrickKeane如果沒有元素或文本節點,但他們在你的例子中。 – alex

0

我有一個利潤率上,我不想在p>的p元素設置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'子元素的元素嗎? –

相關問題