Правильное упорядочение CSS - ключевое слово.
http://jsfiddle.net/wHztz/
CSS:
ul { background: red; }
ul ul { background: green }
ul li { background: yellow; margin: 10px;}
ul ul li { background: blue; }
HTML такой же, как в вашем вопросе, минус div.
Редактировать: Черт, я всегда заканчиваю тем, что осознаю вещи после того, как отправил свой ответ .. Похоже, у тебя была эта идея.
О внесении классов в список. Вам нужно только поставить классы на ул
(Не важно .. это зависит)
Edit2: Если вы настаиваете на использовании классов для каждого элемента, но не хотите добавлять их вручную, вы можете сделать что-то вроде этого: http://jsfiddle.net/wHztz/5/
Это дает каждому ul класс в последовательности: ulist1, ulist2, ulist3 ... в зависимости от того, сколько у вас, конечно, uls.
Edit3: немного изменил код.
http://jsfiddle.net/wHztz/6/ - обратите внимание, что я ничего не изменил в CSS, поэтому CSS ничего не делает в этом примере.
JQuery:
$("#my_nested_list > ul, ul ul").each(function (i) {
i = i+1;
$(this).addClass("list"+i).children().addClass("list"+i);
});
Создает:
<div id="my_nested_list">
<ul class="list1">
<li class="list1">
Item label
<ul class="list2">
<li class="list2">Subitem 1</li>
<li class="list2">Subitem 2</li>
<li class="list2">Subitem 3</li>
</ul>
</li><li class="list1">
</li><li class="list1">...</li>
</ul>
</div>
Вы можете легко настроить таргетинг на это как:
ul.list1 {}
li.list1 {}
ul.list2 {}
li.list2 {}
Обратите внимание, что вы можете изменить эту часть:
$(this).addClass("list"+i).children().addClass("list"+i);
в
$(this).addClass("ul"+i).children().addClass("li"+i);
и это приведет к этому.
<div id="my_nested_list">
<ul class="ul1">
<li class="li1">
Item label
<ul class="ul2">
<li class="li2">Subitem 1</li>
<li class="li2">Subitem 2</li>
<li class="li2">Subitem 3</li>
</ul>
</li><li class="li1">
</li><li class="li1">...</li>
</ul>
</div>