2014-10-20 3 views
1

У меня есть массив объектов $('selector'), я хочу получить index() каждого элемента и добавить его в html каждого элемента. Я могу получить индекс первого элемента, просто напишу $('selector').index(), но как я могу получить другие, и добавить их к DOM-объектам. Помогите, я новичок в Javascript и jQuery.Получить индекс элемента в массиве jQuery

+0

Вы можете использовать [.each()] (http://api.jquery.com/each/) – Regent

+1

Спасибо вам, ребята, я ценю вашу помощь) – nowiko

ответ

2

Попробуйте это ...

$("selector").each(function(i) { 
    $(this).html($(this).html() + " " + i); 
}); 

i будет индекс каждого выбранного элемента и будет добавлен в HTML.

Вот jsfiddle пример ...

http://jsfiddle.net/54bcn68j/

0

Использование JQuery.each:

$('selector').each(function(index) { 
    console.log(index); 
}); 

Пример:

Html:

<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 
<div>My Div</div> 

JS:

$('div').each(function(index){ 
    var newHtml = $(this).html() + " - Index:" + index; 
    $(this).html(newHtml); 
}); 

Выходные:

My Div - Index:0 
My Div - Index:1 
My Div - Index:2 
My Div - Index:3 
My Div - Index:4 
My Div - Index:5 
My Div - Index:6 
My Div - Index:7 
My Div - Index:8 

JSFiddle.

0

Используйте .each(), чтобы выбрать каждый элемент, получить каждый индекс и добавить каждый индекс ко всем элементам, соответствующим селектору.

2

Вы можете передать функцию в метод jQuery .html(). Эта функция будет удобно быть вызвана с двумя параметрами, индекс элемента и текущего HTML, так что вы хотите легко:

$elements.html(function(i, v){ 
    return v + i; 
}); 

JSFiddle

Который даст вам index относительно сделанного выбора. Если вы хотите, индекс относительно каждого элемента братьев и сестер, вам нужно будет .index():

$('ul li').html(function(_, v){ 
    return v + $(this).index(); 
}); 

JSFiddle

+0

Очень приятно. Спасибо Джордж за «что-то новое» :) – Archer

+2

@Archer Рад, что вы так думаете. Фактически, многие методы jQuery поддерживают функцию, передаваемую их версиям setter. – George

+0

Да, я знал об этом, но это никогда не приходит в голову. Я не видел, чтобы это использовалось именно так, но мне это нравится! – Archer

-1

Вы должны перебирать с помощью .each

Пример кода:

$("selector").each(function(i, v) { 
    $(this).append(i); 
}); 
+0

Я обновил свой код, пожалуйста, удалите отрицательную оценку. –

-1

Просто цикл через они и итератор скажут вам, что это индекс.

var array = $('.someClass'); 
for(var i=0; i<array.length; i++){ 
    console.log('Element #' + i + ': ' + $(array[i]).text()); 
} 
+0

Поделитесь вопросом, почему мой ответ неверен? – Dropout

0

Try:

$.each($('selector'), function() { 
    $(this)append($(this).index()); 
}); 
0

Вы можете также использовать эк:

$('selector').each(function(){ 
    $(this).html('index for this html is ' + $(this).eq()); 
}); 
Смежные вопросы