Как стилизовать элементы верхнего уровня вложенного списка

Учитывая следующую неупорядоченную структуру вложенного списка:

<ul id="nestedList">
    <li>
        Item A
        <ul>
            <li>Item A Descrip</li>
        </ul>
    </li>
    <li>
        Item B
        <ul>
            <li>Item B Descrip</li>
        </ul>
    </li>
    <li>
        Item C
        <ul>
            <li>Item C Descrip</li>
        </ul>
    </li>
</ul>

Какой селектор jQuery мне нужно использовать для стилизации только элементов li верхнего уровня (Элемент A, Элемент B и т. Д.), А не элементов li "Descrip"?

Я пытался работать с селектором.children(), который, как сказано в документации jQuery, выбирает только непосредственные дочерние элементы выбранного элемента, но все, что я пробовал, либо стилизовало весь список, либо только элементы li второго уровня.

Вот jQuery, с которым я работал:

$('#nestedList').children().css('font-weight', 'bold');

а также:

$('ul#nestedList').children().css('font-weight', 'bold');

ОБНОВЛЕНИЕ Я создал jsFiddle для этого, так что не стесняйтесь возиться с этим...

4 ответа

Решение

"но все, что я пробовал, либо стилизовало весь список"

Это потому, что ваши стили, размещенные на верхнем уровне, наследуются от стилей верхнего уровня.

Вам нужно переопределить эти стили во вложенных списках.

$('#nestedList').children().css('font-weight', 'bold')
                .find('li').css('font-weight','normal');

Рабочий пример: http://jsfiddle.net/w66rK/

Попробуй это

$('#nestedList > li').css('font-weight', 'bold');

Использовать прямой CSS было бы проще:

#nestedList > li {
    /* direct li descendants of the parent ul */
    /* CSS */
}

Этот же селектор, конечно же, работает с jQuery:

$('#nestedList > li').css('color','red'); // etc...
Другие вопросы по тегам