3

我有这个来自早期问题的代码

$("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

4 回答 4

6

你可以使用这个:

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

演示在这里

另一种方式,也使用 jQuery 与reverse是:

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

这个演示在这里。(感谢伊恩的建议。)

另一种选择是使用length(匹配该选择器的元素计数) 并使用index每次迭代的 the 向下移动。然后你可以使用这个:

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

这个演示在这里

另一种与上述有关,并受到Adeneo回答的启发:

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

演示在这里

于 2013-08-17T18:43:23.427 回答
3

你可以把这样的东西:

var length_div = $("div").length

    $("div").each(function(i) {
        var tmp  = length_div-i;   
        $(this).find("span").text(tmp);
    });
于 2013-08-17T18:44:51.473 回答
3
$("div span").text(function(i) {
    return $("div span").length-i;
});

小提琴

于 2013-08-17T19:05:43.633 回答
2

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

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

演示

于 2013-08-17T18:45:35.747 回答