从jQuery中的中间元素开始的数字元素

时间:2013-12-27 20:16:35

标签: javascript jquery html css

我有一些奇数元素。

<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>

我想知道如何在jQuery中为它们提供一个带编号的类,从中间元素开始计算,如下所示:

<div class="line no2"></div>
<div class="line no1"></div>
<div class="line no0"></div>
<div class="line no1"></div>
<div class="line no2"></div>

编辑:

之前,我会检查元素的数量。如果金额是偶数值,我会添加一个添加元素,以获得奇数个元素。

我希望获得圆形文字形状like this example (see curve)。行数并不重要,因为中间行<div class="line no0"></div>将是圆的垂直中心。

3 个答案:

答案 0 :(得分:5)

试试这个:

var middle=Math.ceil($("div").length/2);
var divs=$("div.line");
divs.each(function (){
    $(this).addClass('no'+Math.abs(middle-(divs.index($(this))+1)));
});

http://jsbin.com/IKiGexIr/5/edit

更短的版本:(PSL)

var middle=Math.ceil($("div").length/2),divs=$("div.line");
    divs.addClass(function (i){ return 'no'+ Math.abs(middle-(i+1)); });

enter image description here

答案 1 :(得分:4)

试试这个

var h = parseInt($('.line').length / 2, 10);
$('.line').each(function (i) {
    $(this).addClass('no' + (i < h ? h - i : i - h))
})

demo

答案 2 :(得分:3)

试试这样的事情:

$(document).ready(function(){
var indice = 0;
$("div").each(function(){
  indice++;
});
var mid = (indice / 2 ).toFixed();
var aux = 1;
var start = mid - 1;
$("div").each(function(){
    if(start > -1)
    {
        $(this).addClass("no"+start);
        start --;
    }
    else
    {
        $(this).addClass("no"+aux);
        aux ++;
    }   

});

});

在这里工作小提琴:http://jsfiddle.net/robertrozas/7pnUP/1/