使用jQuery为每个第一,第二和第三个元素提供一个唯一的类

时间:2015-09-16 00:01:11

标签: javascript jquery

我正在使用jQuery选择器来返回对象。

例如var target = $('.target');将返回6个对象。

对象没有相同的父对象。

我想给每个对象类如下:

target[0].addClass('top');
target[1].addClass('middle');
target[2].addClass('low');
target[3].addClass('top');
target[4].addClass('middle');
target[5].addClass('low');

依此类推......我以为我可以使用一些模数。我知道以下是错误的。

target.each(function(index){
    index += 1;

    if (index % 3 === 0) {
      $(this).addClass('low');
    } else if(index % 2 === 0) {
      $(this).addClass('middle');
    } else {
      $(this).addClass('top');
    }
}

我有一种轻松的方式,我在看?

4 个答案:

答案 0 :(得分:7)

这应该做你想要的事情

var classes = ['top', 'middle', 'low'];

target.each(function(index){
    $(this).addClass( classes[index % 3] );
}

工作演示

var classes = ['top', 'middle', 'low'];

$(function() {
  var target = $('.target');
  target.each(function(index) {
    $(this).addClass(classes[index % 3]);
  });
});
.top {
  color: red;
}
.middle {
  color: green;
}
.low {
  color: cyan;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="target">1</div>
<div class="target">2</div>
<div class="target">3</div>
<div class="target">4</div>
<div class="target">5</div>
<div class="target">6</div>

答案 1 :(得分:0)

您需要使用模数运算符,但首先要了解它的工作原理:

a%b当且仅当b除以a-c时返回c,或者换言之,c是超过b的欧几里德除法的其余部分。

现在这将有效:

target.each(function(index){
    if (index % 3 === 0) {
      $(this).addClass('low');
    } else if(index % 3 === 1) {
      $(this).addClass('middle');
    } else {
      $(this).addClass('top');
    }
}

答案 2 :(得分:0)

jQuery的.each()方法会增加索引本身,因此您不需要进行增量。

var target = $('.target');
target.each(function (i, el) {
    switch (i % 3) {
        default:
            break;
        case 0:
            $(this).addClass("top")
            break;
        case 1:
            $(this).addClass("middle")
            break;
        case 2:
            $(this).addClass("bottom")
            break;
    }

});

答案 3 :(得分:0)

由于这些元素不是同一个父母的孩子,你应该尝试这样的事情。

<div>Top 1</div>
<div>Middle 1</div>
<div>Low 1</div>
<div>Top 2</div>
<div>Middle 2</div>
<div>Low 2</div>

<script>
$('div:nth-child(3n+1)').addClass("top");
$('div:nth-child(3n+2)').addClass("middle");
$('div:nth-child(3n+3)').addClass("low");
</script>