I has an array of objects $('selector'), I want to get index() of each element and append it to the html of each elemt. I can get index of first element just write $('selector').index(), but how I can get other, and append them to they DOM-objects. Help, I am new in Javascript and jQuery.
-
You can use .each()Regent– Regent2014-10-20 11:12:37 +00:00Commented Oct 20, 2014 at 11:12
-
1Thanks you guys, i appreciate yours help)nowiko– nowiko2014-10-20 11:25:31 +00:00Commented Oct 20, 2014 at 11:25
Add a comment
|
8 Answers
Try this...
$("selector").each(function(i) {
$(this).html($(this).html() + " " + i);
});
i will be the index of each selected element and will be appended to the html.
Here's a jsfiddle example...
Comments
You can pass a function to the .html() jQuery method. This function will conveniently be called with two parameters, the element index and the current HTML, so what you want is easy:
$elements.html(function(i, v){
return v + i;
});
Which will give you the index relative to the selection made. If you wanted the index relative to each elements siblings, you would need .index():
$('ul li').html(function(_, v){
return v + $(this).index();
});
2 Comments
George
@Archer Glad you think so. In fact, many jQuery methods support a function being passed to their setter versions.
Reinstate Monica Cellio
Yeah, I was aware of that but it's something that never comes to mind. I've not seen it used in this particular way, but I like it!
Use JQuery.each:
$('selector').each(function(index) {
console.log(index);
});
Example:
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);
});
Output:
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