我有这段代码,我希望next
跳到下一次迭代。
$.each(result, function(key, value) {
if (value.type == "individuel") {
cform["IN"] = "checked";
} else if (value.type == "course") {
cform["CO"] = "checked";
} else {
next;
}
cform["ID"] = key;
cform["title"] = value.title;
$('#template').tmpl(cform).appendTo('#content');
});
但next
显然意味着与我期望的不同。
我next
退出$.each
而不是跳过当前的键/值。
有没有像我期望的那样做next
的方法?
答案 0 :(得分:7)
由于jQuery的性质,无法在函数体中声明“next”。内部函数不知道它正在循环中执行,因此不会影响这个事实。
但你可以提早回来,这具有同样的效果:
$.each(result, function(key, value) {
if (value.type == "individuel") {
cform["IN"] = "checked";
} else if (value.type == "course") {
cform["CO"] = "checked";
} else {
return true;
}
cform["ID"] = key;
cform["title"] = value.title;
$('#template').tmpl(cform).appendTo('#content');
});
我发现这更时尚:
$.each(result, function(key, value) {
switch (value.type) {
case "individuel": cform["IN"] = "checked"; break;
case "course": cform["CO"] = "checked"; break;
default: return true;
}
cform["ID"] = key;
cform["title"] = value.title;
$('#template').tmpl(cform).appendTo('#content');
});
答案 1 :(得分:6)
与其他构造不同,例如for..in
和while
,$.each
不是语言构造。使用这些结构,您可以使用continue
跳过当前元素,使用break
离开循环。由于$.each
采用回调函数,因此您需要使用回调的return
值来影响接下来发生的事情。
返回true
继续下一个项目;返回false
以打破循环。
在这种情况下,您应该使用return true
:
else {
return true; // skip to next element
}
答案 2 :(得分:3)
返回true;
来自文档:
我们可以在a处打破$ .each()循环 通过制作特定的迭代 回调函数返回false。 返回非假是与a相同 在for循环中继续声明;它 将立即跳到下一个 迭代。
答案 3 :(得分:1)
使用if语句使下一个不必要。只需在if中执行任何操作,并忽略else。迭代会自动进行。
答案 4 :(得分:-1)
使用continue;
跳转到循环中的下一次迭代。
编辑:是的,抱歉我发誓我在那里看到了一个循环:(你可以通过返回非假值来继续jQuery的每个(),你的案例会返回吗?