动态地将元素组织到列中

时间:2014-06-04 19:01:31

标签: javascript jquery

我需要将未知数量的元素组织到垂直读取的列中。下面的代码非常适合根据每列的设定数量来组织元素,但我不知道元素的数量,因此我需要将所有元素分成4组(尽管可能有5或6个组)。 / p>

第1列=第25%的元素
第2列=第25%的元素
第3列=第3个25%的元素
第4列=第4个25%的元素

$(window).load(function(){
$('.equalChildHeights').setEqualHeights();

var linkNum = 1;
$('.organizeLinks').each(function(){
    if (linkNum <= 10) {
        $(this).addClass('linkCol1');
    } else if (linkNum > 10 && linkNum <= 20) {
        $(this).addClass('linkCol2');
    } else if (linkNum > 20 && linkNum <= 30) {
        $(this).addClass('linkCol3');
    } else if (linkNum > 30 && linkNum <= 40) {
        $(this).addClass('linkCol4');
    } else if (linkNum > 40 && linkNum <= 50) {
        $(this).addClass('linkCol4');
    };
    linkNum++;
});
$('.linkCol1').each(function(){
    $(this).appendTo('.column-1');
});
$('.linkCol2').each(function(){
    $(this).appendTo('.column-2');
});
$('.linkCol3').each(function(){
    $(this).appendTo('.column-3');
});
$('.linkCol4').each(function(){
    $(this).appendTo('.column-4');
});

2 个答案:

答案 0 :(得分:0)

您正在寻找模数运算符

答案 1 :(得分:0)

这是一个有效的例子:

计算所有元素并使用百分比设置var。

var linkNum = 1;
var totoalLinksCol = $('.organizeLinks').length;
var linksPerCol = Math.ceil(totoalLinksCol/4);
$('.organizeLinks').each(function(){
    if (linkNum <= linksPerCol) {
        $(this).addClass('linkCol1');
    } else if (linkNum > linksPerCol && linkNum <= linksPerCol*2) {
        $(this).addClass('linkCol2');
    } else if (linkNum > linksPerCol*2 && linkNum <= linksPerCol*3) {
        $(this).addClass('linkCol3');
    } else if (linkNum > linksPerCol*3 && linkNum <= linksPerCol*4) {
        $(this).addClass('linkCol4');
    };
    linkNum++;
});
$('.linkCol1').each(function(){
    $(this).appendTo('.column-1');
});
$('.linkCol2').each(function(){
    $(this).appendTo('.column-2');
});
$('.linkCol3').each(function(){
    $(this).appendTo('.column-3');
});
$('.linkCol4').each(function(){
    $(this).appendTo('.column-4');
});

如果要将它们分成5列,只需将4更改为5。

var linksPerCol = Math.ceil(totoalLinksCol/4);