2014-01-25 3 views
2

У меня есть следующий списокКак выбрать первый элемент с определенным классом

<ul class="list"> 
     <li>1</li> 
     <li class="foo">2</li> 
     <li class="foo">3</li> 
     <li class="foo">4</li> 
     <li>5</li> 
    </ul> 

Я хочу изменить цвет первого и последнего li's, который имеет класс foo, используя CSS

.list .foo:first-child, 
.list .foo:last-child { 
    color: red; 
} 

Но он ничего не выбирает. Проверьте это fiddle.

Как выбрать первый и последний li's с классом foo. Если это невозможно с помощью css, то как это сделать с помощью jQuery.

+0

возможно без класса http://jsfiddle.net/2T2yv/7/ – Karuppiah

+0

Я хочу выбрать первый 'li' с классом' foo', а не только первый 'li' – rkb

+1

дубликат http: // stackov erflow.com/questions/2717480/css-selector-for-first-element-with-class – TruongSinh

ответ

6

Я не подумайте, что для этого есть селекторное решение css, вы можете использовать jQuery для назначения класса

.selected { 
    color: red; 
} 

затем

$('.list li.foo').filter(':first, :last').addClass('selected') 

Демо: Fiddle

+0

+1. Я предпочитаю это моему ответу. Такая же общая идея, но гораздо более аккуратная, чтобы сделать это в одной строке с '.filter()'. – nnnnnn

0
.list .foo:nth-child(2n) 
{ 
    color: green; 
} 

и Html является

<ul class="list"> 
    <li>1</li> 
    <li class="foo">2</li> 
    <li class="foo">3</li> 
    <li class="foo">4</li> 
    <li>5</li> 
</ul> 

Fiddle

Для лучшего понимания п-й ребенок (псевдо-селектор), вы можете пройти через этот http://css-tricks.com/how-nth-child-works/

+1

Почему downvoted? он говорит, что хочет выбрать первый и последний li .. – Karuppiah

+3

Это вообще не отвечает на вопрос. @rkb хотел, чтобы первый и последний элемент списка с измененным классом foo. –

+1

Я сказал, что хочу выбрать первый и последний класс класса 'foo'. Так что это второй и четвертый «ли» в этом случае. – rkb

1

сделать это

$('.list li.foo').filter(':first, :last').css("color", "red"); 

или

$('.list li.foo:first,.list li.foo:last').css("color", "red"); 
+0

где foo ?? –

+0

Вопрос гласит, что только элементы li с классом «Foo» должны быть затронуты. – nnnnnn

+0

@rkb, пожалуйста, проверьте приведенный выше ответ. Я его редактирую. –

1

Я не думаю, что это может быть сделано только с помощью CSS, но просто с JQuery. Вот один из способов:

var $lis = $("ul.list li.foo"); 
$lis.first().addClass("someClass"); 
$lis.last().addClass("someClass"); 

С:

.someClass { 
    color: red; 
} 

Демо: http://jsfiddle.net/2T2yv/10/

Или несколько иное решение, которое не повторяется .addClass():

var $lis = $("ul.list li.foo"); 
$lis.first().add($lis.last()).addClass("someClass"); 
0

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

$('.list li.foo').first().css('color', 'red'); 
$('.list li.foo').last().css('color', 'red'); 
Смежные вопросы