css find first child дает неверный результат

0

У меня есть:

<ul>
<li id="test1">The third paragraph.</li>
<li id="test1">The fourth paragraph.</li>
<li id="test2">The second paragraph.</li>
<li id="test2">The third paragraph.</li>
<li id="test2">The fourth paragraph.</li>
<li id="test3">The second paragraph.</li>
<li id="test3">The third paragraph.</li>
<li id="test4">The fourth paragraph.</li>
<li id="test4">The fourth paragraph.</li>
<li id="test7">The fourth paragraph.</li>
<li id="test7">The fourth paragraph.</li>
</ul>

И код css:

ul > #test4:first-child
{
background:#ff0000;
}

Этот код ul> # test1: first-child хорош, но ul> # test4: first-child not working

Демо, где проблема?

Теги:
css-selectors

2 ответа

1
Лучший ответ

Во-первых, идентификатор элемента должен быть уникальным,

Second : first-child будет соответствовать только первому дочернему элементу независимо от любого другого селектора, используемого для дочернего элемента, поэтому в вашем случае первый # test1 будет единственным элементом, сопоставляемым ul > :first-child селектор ul > :first-child

Я не думаю, что для этого есть только решение css.

Вместо атрибута ID использовать класс, а затем использовать : first-selector в jQuery, как

.someclass{
    //some rule
}

тогда

$('ul > .test4:first').addClass('someclass')
  • 0
    Я второй это [я собирался предложить это сам, а потом вы отредактировали :)]
0

Это не работает, потому что вы ищете :first-child элемента <ul> который имеет идентификатор с именем test4. То, что вы хотите, это первый элемент с id test4 и я думаю, что это невозможно с чистым CSS.

Кроме того, вам лучше использовать классы вместо идентификаторов, так как вы не должны повторять идентификаторы в элементах HTML.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню