Как придать стиль элементу списка, только если у элемента есть еще одна <ul>, иначе стиль не должен применяться? - PullRequest
3 голосов
/ 05 января 2010

Как придать стиль элементу списка, только если элемент имеет другой список внутри, иначе стиль не должен применяться?используя только css.

См. пример здесь http://jsbin.com/udora

Я хочу удалить стрелки из всех других предметов, кроме «Статьи» и «Pitching Past the 7th Inning»

Iпонял, что это невозможно с помощью css, любое рабочее решение jquery с демо?

Ответы [ 3 ]

2 голосов
/ 05 января 2010

То, что у вас есть в CSS (точнее, CSS-2) .. descendant selector ... это то, что вам предлагали другие .. и это также откуда (ссылка) вы пришли с этой идеей ..

Идея, которую вы ищете, называется .. Ascendant selector .. (где вы выбираете элемент, который содержит определенный элемент в ) который, к сожалению, недоступен в CSS-2, но был предложен в CSS-3 ..
Везде они предлагают использовать классы и идентификаторы в качестве альтернативы (что более болезненно .. с точки зрения дизайна и сопровождения) ..) ... в конечном счете, это является недостатком CSS-2 ..

1 голос
/ 05 января 2010

вы можете использовать ul id и сделать что-то вроде этого,

#sitemap>li>li {
    type: apply-style;
}

EDIT:

# sitemap> li означает дочерний элемент li элемента с id = "sitemap" и аналогично #sitemap> li> li означает дочерний элемент li дочернего элемента li элемента с идентификатором # sitemap.

Подробнее о селекторах CSS здесь

EDIT2:

на самом деле, поскольку второй li должен находиться под вторым ul,

#sitemap>li>ul>li {
}

просто имейте в виду, что> означает прямой ребенок.

ПРИМЕЧАНИЕ: Это не будет работать в IE6.

0 голосов
/ 05 января 2010

Нельзя написать правило css, основанное на потомках нужного элемента.

Но вы можете попробовать применить стиль к внутреннему ul, что-то вроде

li ul { foo: bar }

или если вам не нужно подавать заявку на «Статьи», тогда

li li ul { foo: bar }

В качестве альтернативы, в jquery вы можете сказать

$('li:has(ul)').css('foo', 'bar');
...