首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在jQuery中捕获$.each内部的最后一次迭代?

如何在jQuery中捕获$.each内部的最后一次迭代?
EN

Stack Overflow用户
提问于 2009-09-09 11:04:45
回答 6查看 26.8K关注 0票数 19
代码语言:javascript
复制
var arr = {'a':fn1,'b':fn2,'c':fn3}

$.each(arr,function(name,func){
(do something particular for the last iteration)
...
})

如果不使用额外的变量将是最好的。

编辑:我的意思是字面上的最后一对,这是我输入的最后一对。

EN

回答 6

Stack Overflow用户

发布于 2009-09-09 11:12:46

您的示例变量名为'arr',但它根本不是一个数组(它是一个对象)。这使得它有点令人困惑。

当迭代一个对象时,没有“最后一个”属性,因为属性的顺序在设计上是不确定的。

在迭代数组时,您可以简单地将回调的第一个参数与(array.length-1)进行比较,以检测最后一次迭代。

在代码中(用于数组):

代码语言:javascript
复制
var arr = [ "a","b","c" ];

$.each(arr, function(i,val) { if (i == arr.length-1) ... });
票数 33
EN

Stack Overflow用户

发布于 2009-09-09 11:30:14

Philippe Leybaert的回答很好地概括了你的问题,而且可能有一种更清晰的方法来做你想做的事情。但也就是说,我看不到一种不使用额外变量就能完成您所要求的操作的方法。

代码语言:javascript
复制
var obj = { 'a': fn1, 'b': fn2, 'c': fn3 };
var lastKey;

$.each(obj, function(key, fn) {
    // do stuff...
    lastKey = key;
});

obj[lastKey].doStuffForLastIteration();
票数 4
EN

Stack Overflow用户

发布于 2012-09-29 08:48:30

如果您需要发生某些事情,假设您正在迭代单个列表,并且希望有条件地插入另一个对象,但如果不满足条件,则需要最后插入它,您可以这样做:

代码语言:javascript
复制
$list = $({{some_selector}});
$list_elt = $({{some_html}})
$list.each(function (i) {
    if ({{condition is met}}) {
         $(this).before($list_elt);
         return false;
    }
    else if (i == $list.length - 1) {
        $(this).after($list_elt);
        return false;
    }
});

实际上,这和菲利普的解决方案是一样的。如果有什么原因,这不应该工作,请评论并让我知道,因为我使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1399004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档