ボーダーを最初のセットに制限する#menu > li
代わりに、CSS で使用します。#menu li
すなわち
#menu > li
{
border-left: 1px solid black;
}
アップデート
OPによって投稿されたフィドル- http://jsfiddle.net/DrJsr/3/によると、マークアップは次のとおりです。
<ul id="menu">
<li>first set<li>
<ul>
<li>second set</li>
<li>second set</li>
</ul>
<li>first set<li>
<li>first set<li>
</ul>
上記のいくつかの問題があります。
- 一部の LI はクローズされていません。これにより、一部のブラウザが別のファイルの開始と誤解する可能性があります。
- 2 番目のセットの UL は、メイン UL の直接の子です。これは HTML では無効です。2 番目の UL は、メイン UL 内の LI のいずれかの子であることが理想的です。
さて、ボーダーに関しては、実際には正しく機能しています。Firebug または Chrome を使用して 2 番目のセットの UL を検査すると、ブラウザが 2 番目のセットの UL をラップする LI を自動的に追加し、それによって HTML が自動的に有効になることがわかります。
つまり、HTML は自動的に次のようになります。
<ul id="menu">
<li>first set</li>
<li> <!-- this is added by browser and this LI will have a left border since it falls under #menu > li -->
<ul>
<li>second set</li>
<li>second set</li>
</ul>
</li>
<li>first set</li>
<li>first set</li>
</ul>
この新しい LI は該当#menu > li
し、左の境界線をレンダリングします。Firebug をチェックインすると、表示されている左の境界線が、この新しい LI 用にレンダリングされたものであることがわかります。