计算所有div并按降序在span中添加每个数字

时间:2013-08-17 18:40:59

标签: javascript jquery

我有早期question

的代码
$("div").each(function(i) {
    $(this).find("span").text(++i);
}); 

- 操作中的完整代码= http://jsfiddle.net/pm3YL/

此JQuery代码计算页面中的每个div并在span

中添加订单号

但我需要做同样的降序

所以输出就像这个

http://jsfiddle.net/pm3YL/1/

而不是

http://jsfiddle.net/pm3YL/

4 个答案:

答案 0 :(得分:6)

您可以使用:

$($("div").get().reverse()).each(function (i) {
    $(this).find("span").text(++i);
});

演示here

另一种方式,使用jQuery和reverse

$.fn.reverse = [].reverse;
$("div").reverse().each(function (i) {
    $(this).find("span").text(++i);
});

此演示here。 (感谢Ian提出建议。)

另一个替代方法是使用length(与该选择器匹配的元素数)并使用每次迭代的index从那里开始。然后你可以使用它:

var nr_of_divs = $("div").length;
$("div").each(function (i) {
    $(this).find("span").text(nr_of_divs - i);
});

此演示here

还有一个,与上面的那个相关,受到Adeneoanswer的启发:

var nr_of_divs = $("div").length;
$("div span").text(function (i) {
    return nr_of_divs - i;
});

演示 here

答案 1 :(得分:3)

您可以输入类似的内容:

var length_div = $("div").length

    $("div").each(function(i) {
        var tmp  = length_div-i;   
        $(this).find("span").text(tmp);
    });

答案 2 :(得分:3)

$("div span").text(function(i) {
    return $("div span").length-i;
});

FIDDLE

答案 3 :(得分:2)

你可以编写一个在循环中反向运行的for循环,但我想从单元数中减去计数器以获得反向编号更简单:

var divs = $("div"),
    l = divs.length;
divs.each(function(i) {
    $(this).find("span").text(l - i);
});

Demo