可能性の重複:
Is there a CSS parent selector?CSSの "haschildren"セレクタはありますか?
私は子要素が存在する場合にのみ使用することができるCSSセレクタはありますか?
は考えてみましょう:
<div> <ul> <li></li> </ul> </div>
私はそれが少なくとも一つの子<li>
要素を持っていない場合にのみDIVするdisplay:none
を適用したいと思います。
私はこれを使用できますか?
可能性の重複:
Is there a CSS parent selector?CSSの "haschildren"セレクタはありますか?
私は子要素が存在する場合にのみ使用することができるCSSセレクタはありますか?
は考えてみましょう:
<div> <ul> <li></li> </ul> </div>
私はそれが少なくとも一つの子<li>
要素を持っていない場合にのみDIVするdisplay:none
を適用したいと思います。
私はこれを使用できますか?
並べ替えを:empty
と限定していますが、制限されています。
例:http://jsfiddle.net/Ky4dA/3/
でもテキストノードはそうDIV内部ULが一致しているからDIVを続けるだろう、親が空であるとみなされないようになります。
<h1>Original</h1>
<div><ul><li>An item</li></ul></div>
<h1>No Children - Match</h1>
<div></div>
<h1>Has a Child - No Match</h1>
<div><ul></ul></div>
<h1>Has Text - No Match</h1>
<div>text</div>
DIV {
background-color: red;
height: 20px;
}
DIV:empty {
background-color: green;
}
参考:スクリプトルート行けばhttp://www.w3.org/TR/selectors/#empty-pseudo
:もちろん
// pure JS solution
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++){
if(divs[i].childNodes.length == 0){ // or whatever condition makes sense
divs[i].style.display = "none";
}
}
を、jQueryのは、これを簡単のような作業を行いますが、この一つのタスクには、するのに十分な正当化ではありません全体の図書館。
CSSには残念なことに親ルールはありません。それを適用する必要がある場合は、特定の子を含む親だけがJavascriptを使用するか、より簡単にjQueryというjavascriptのライブラリを使用します。
Javascriptがあなたの例のために私たちはHTMLページの一番下にこのような何かをするだろう、somewaysにCSSにsimilairな方法で記述することができ:あなたは含める必要があり、このために(
<script type="text/javascript">
$('div:has(ul li)').css("color","red");
</script>
あなたはjqueryの使用している場合は、ドキュメント内のjQueryライブラリは、単にあなたの<head></head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
私は言っています:JavaScriptの –
に次のように置くことによって、あなたは
この機能を試してみることができますhttps://css-tricks.com/parent-selectors-in-css/は
$('div ul').each(function(x,r) {
if ($(r).find('li').length < 1){
$(r).css('display','block'); // set display none
}
})
CSSを使用した可能性が、可能ではない別のオプションがあります非常にコンパクトなので、この1つは最もです。私は、jQuery( 'navbar-inner:not(:has(ul li))')のようなセレクタと一緒に使用しました。css( 'display'、 'none'); – Ibu