Детский метод jQuery, выбирающий внуков

Я следил за учебником по net.tuts на jQuery. У меня проблема с методом выбора детей jQuery. Насколько я понимаю, со следующей функцией я мог бы изменить цвет дочерних элементов, но он идет более чем на один уровень вниз, чтобы изменить цвет всех элементов списка на красный. Что я сделал не так? Я видел, как тот же скрипт отлично работает в видеоуроке. Вот код

<ul class="color_change">
    <li>Item 1</li>
    <li>Item 2</li>
    <li> 
        <ul>
            <li>sub item</li>
            <li>sub item</li>
        </ul>
    </li>
</ul>

<script>
    $('ul.color_change').children('li').css('color','red');
</script>`

person user1986244    schedule 13.07.2013    source источник
comment
Это потому, что цвет CSS наследуется от своего родителя.   -  person A. Wolff    schedule 13.07.2013
comment
жареный абсолютно правильно. Поместите css, чтобы покрасить ваш li (кроме красного). Проверьте эту скрипту. /a> не запутайтесь!   -  person pearl's    schedule 13.07.2013
comment
ваша скрипка не работает, но я поставил один балл, так как вы указали, что я пропустил в уроке, которому следовал, а именно установку базового цвета.   -  person user1986244    schedule 13.07.2013


Ответы (1)


Вы можете использовать это:

ДЕМО

$('ul.color_change').children('li').not(':has(ul)').css('color','red');

Другой способ установить красный цвет для всех дочерних элементов первого уровня:

ДЕМО 2

$('ul.color_change').find('ul').css('color','black').end().children('li').css('color','red');

Но лучше было бы просто использовать правила CSS:

ДЕМО 3

ul.color_change > li{color:red}
ul.color_change > li > ul{color:black}
person A. Wolff    schedule 13.07.2013
comment
Я дал вам один балл за то, что вы не торопились и объясняли различные методы. Наконец, я снова посмотрел учебник, и вы правы, цвет css унаследован от своего родителя. Я забыл один момент из урока, а именно добавление базового цвета li{color:black}; это решило бы проблему. Спасибо - person user1986244; 13.07.2013