2010-03-24 4 views
1

Я чувствую себя как костяной: я хочу назначить index=i каждому выбранному мной LI, при этом я увеличиваю. Кажется, они назначают их все одновременно, и все они получают index=1. Мысли?Как назначить последовательные значения в коллекции jQuery?

$("#window ul li").each(function(){ 
    var i = 1; 
    $(this).attr("index", i); 
    i++; 
}); 

ответ

5

Функция обратного вызова, которую вы передаете в каждый, присваивается индексу на основе нуля в коллекции в качестве первого аргумента.

$("#window ul li").each(function(i){ 
    $(this).attr("index", i+1); 
}); 

Так что, если вы хотите, чтобы ваш индекс, чтобы начать с 1 добавить 1.

+0

Wow; поэтому он заботится об итераторе для вас ... Кто знал. Благодаря! –

0

Это потому, что each выполняет функцию лямбда для каждого элементаотдельно и в каждом вызове вы установите i=1. Вы можете объявить и загладить i перед вызовом each.

var i = 1; 
$("#window ul li").each(function(){ 
    $(this).attr("index", i); 
    i++; 
}); 

Edit: Но решение Марио намного лучше.

0
var i = 1; 
$("#window ul li").each(function(){ 
    $(this).attr("index", i); 
    i++; 
}); 

Это должно сработать.

Смежные вопросы