如何在每个第三个对象上创建一个循环?

时间:2014-10-15 21:45:04

标签: javascript jquery

我想在前三个数据库对象中添加一个类,然后为4到6个对象添加另一个类,依此类推......

我找到了打破循环的方法,但我希望有更好的方法来完成三个串,而不是必须对很多循环进行硬编码?

我很感谢你的帮助!

http://jsfiddle.net/r61bce3z/

这是我拥有的循环的基础:

var tableContent = '';

$.getJSON( '/users/insights', function( data ) {
userListData = data;
$.each(data, function(){
    tableContent += '<ul>';
    tableContent += '<li class="sub">' + this.date + '</li>';
    tableContent += '</ul>';
});

2 个答案:

答案 0 :(得分:3)

$.each()方法使用其所属元素的索引来调用您的函数。因此,使用一点算术作为类名数组的索引:

var classes = ['class1', 'class2', 'class3', 'class4'];

$.getJSON( '/users/insights', function( data ) {
    userListData = data;
    $.each(data, function(i){
        tableContent += '<ul>';
        tableContent += '<li class="' + classes[Math.floor(i/3) % classes.length]
                        + '">' + this.date + '</li>';
        tableContent += '</ul>';
    });
});

使用Math.floor(i/3)可以为您提供3个小组。如果你有3个以上的小组,那么% classes.length允许添加(这样你就不会超过数组的末尾)类,它只是从数组的开头重新开始使用类。)

答案 1 :(得分:0)

您可以使用一些辅助变量来创建它。

var tableContent = '';
var classIndex=-1;

$.getJSON( '/users/insights', function( data ) {
    userListData = data;
    $.each(data, function(index){
        if(index % 3 == 0) classIndex++;
        var css = classes[classIndex];
        tableContent += '<ul>';
        tableContent += '<li class="myClass' + classIndex + '">' + this.date + '</li>';
        tableContent += '</ul>';
    });
}