css first-of-type リストの入れ子の場合
Q&A
Closed
解決したいこと
jqueryを使って、リストの開閉(アコーディオン)をやっています。
それに合わせて、cssでその開閉部分のデザインを行おうとしております。
その際に、first-of-type、second-of-type…で一つ目の要素、二つ目の要素をそれぞれ指示しようとしているのですが、うまくいきません。
下記のように、liの中にulを入れると、first-of-typeが効かず、全部の項目を操作してしまいます。
該当するソースコード
<html>
<head>
<meta charset="utf-8">
<style>
.navSub:first-of-type {
background: #ff0000;
}
</style>
</head>
<body>
<nav id="nav">
<ul>
<li><a href="">ホーム</a></li>
<li>
<a href="javascript:void(0);" class="navToggleTitle">開閉メニュー</a>
<ul class="navSub">
<li><a href="">サブメニュー1</a></li>
<li><a href="">サブメニュー2</a></li>
<li><a href="">サブメニュー3</a></li>
</ul>
</li>
<li><a href="">タイトル</a></li>
<li>
<a href="javascript:void(0);" class="navToggleTitle">開閉メニュー2</a>
<ul class="navSub">
<li><a href="">2サブメニュー1</a></li>
<li><a href="">2サブメニュー2</a></li>
<li><a href="">2サブメニュー3</a></li>
</ul>
</li>
</ul>
</nav>
</body>
</html>
一方下記のように、liの中にulを入れなければ、first-of-typeがうまく効きます。
しかしながら、jqueryの開閉(slideToggle)を使うためには、liの中にulを入れないと
今度は開閉ができなくなってしまいます。
どちらも機能するようにするにはどのようにしたらよいかアドバイスをお願いいたします。
<html>
<head>
<meta charset="utf-8">
<style>
.navSub:first-of-type {
background: #ff0000;
}
</style>
</head>
<body>
<nav id="nav">
<ul>
<li><a href="">ホーム</a></li>
<li>
<a href="javascript:void(0);" class="navToggleTitle">開閉メニュー</a>
</li>
<ul class="navSub">
<li><a href="">サブメニュー1</a></li>
<li><a href="">サブメニュー2</a></li>
<li><a href="">サブメニュー3</a></li>
</ul>
<li><a href="">タイトル</a></li>
<li>
<a href="javascript:void(0);" class="navToggleTitle">開閉メニュー2</a>
</li>
<ul class="navSub">
<li><a href="">2サブメニュー1</a></li>
<li><a href="">2サブメニュー2</a></li>
<li><a href="">2サブメニュー3</a></li>
</ul>
</ul>
</nav>
</body>
</html>