2011-01-04 3 views
2

Я мало знаю о массивах и нумерации объектов. Надеюсь, вы понимаете, что я имею в виду под «нумерацией каждого ли». Таким образом, первый li получает класс «0», второй li получает класс «1» и т. Д.JQuery - Number every li

Html

<div id="imtheking"> 
<ul> 
<li>List Item</li> 
<li>List Item</li> 
<li>List Item</li> 
<li>List Item</li> 
<li>List Item</li> 
<li>List Item</li> 
<li>List Item</li> 
</ul> 
</div> 

Псевдо Javascript (Jquery)

$('#imtheking ul > li').number(starting from: '0'); 

Результат HTML

<div id="imtheking"> 
<ul> 
<li class="0">List Item</li> 
<li class="1">List Item</li> 
<li class="2">List Item</li> 
<li class="3">List Item</li> 
<li class="4">List Item</li> 
<li class="5">List Item</li> 
<li class="6">List Item</li> 
</ul> 
</div 

Да, я думаю, что имя класса, который содержит только номер неверен .. Так, а то «0» или «1» он должен иметь название «number0» или «number1».

Спасибо за ваш ответ!

+0

Обратите внимание, что вы добавляете дополнительный класс классов в список, который не имеет больше информации, чем есть в списке, т.е. последовательности. –

+0

@Caspar Kleijne - мы говорим о значении «индекс»? Я не знал об этом. – Tomkay

+0

Я имею в виду, что если вы добавляете классы, которые присущи только одному элементу и его представлению, в большинстве случаев нет необходимости добавлять класс. Если все элементы должны быть представлены разными, я сомневаюсь, что для списка есть использование. Так или иначе, пожалуйста, объясните, что вы пытаетесь достичь. –

ответ

6
$("#imtheking li").each(function(index) { 
    $(this).addClass('number' + index); 
}); 
4

Вы можете сделать:

$('#imtheking li').each(function(index){ 
    $(this).attr('class', 'list_' + index); 
}); 

выход будет:

<li class="list_0">List Item</li> 
<li class="list_1">List Item</li> 
<li class="list_2">List Item</li> 
<li class="list_3">List Item</li> 
<li class="list_4">List Item</li> 
<li class="list_5">List Item</li> 
<li class="list_6">List Item</li> 

Чтобы сохранить подобную разметку твоего и просто добавив класс является то, что вам нужно, вы можете использовать addClass:

$('#imtheking li').each(function(index){ 
    $(this).addClass('list_' + index); 
}); 
+0

'addClass', вероятно, будет лучше - например, не удаляя существующие классы и т. д. – sje397

+0

@ sje397: Правда, но показывать OP визуально, используя 'attr' :) – Sarfraz

0

Вы можете использовать этот плагин JQuery: http://slightlymore.co.uk/ol/

С их документы:

<ol id="first_example"> 
    <li>Item number 1</li> 
    <li>Item number 2</li> 
    <li>Item number 3</li> 
    <li>Item number 4</li> 
</ol> 


$("ol#first_example").niceOrderedLists(); 

Однако это не добавляет класс, но это, вероятно, поможет вам добиться того, что вы пытаетесь делать.

+0

Нельзя ли это сделать с помощью чистого CSS? – falstro