简体   繁体   中英

Add class to div with number increasing for each div

I'm wanting to add a class 'slide-number-x' to an element within each slide in a slider, with the 'x' representing the slide number in the dom.

So, for example this simple HTML markup:

<div class="slider">
    <div class="slide"><div class="slide-title"></div></div>
    <div class="slide"><div class="slide-title"></div></div>
    <div class="slide"><div class="slide-title"></div></div>
    <div class="slide"><div class="slide-title"></div></div>
</div>

Would become:

<div class="slider">
    <div class="slide slide-number-1"><div class="slide-title"></div></div>
    <div class="slide slide-number-2"><div class="slide-title"></div></div>
    <div class="slide slide-number-3"><div class="slide-title"></div></div>
    <div class="slide slide-number-4"><div class="slide-title"></div></div>
</div>

I thought this would work:

$('.slide').each(function(i){
  $(this).addClass('slide-number'i+1);
});

Any help or ideas?

Many thanks, R

You forgot the concatenation operator ( + ), use:

$('.slide').each(function(i){
  $(this).addClass('slide-number-' + (i+1));
});

看起来应该是:

$(this).addClass('slide-number-' + (i + 1));

This gives you what you want

$('.slide').each(function(i){
  $(this).addClass('slide-number-' + (i+1));
});

You're + is in the wrong place... Try this. It worked for me...

$('.slide').each(function(i){
  $(this).addClass('slide-number'+i);
});

You are missing the concatenation operator. Also, the convention for incrementing a value in JavaScript is the the double plus.

$('.slide').each(function(i){
  $(this).addClass('slide-number-' + ++i);
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM