如何跳过下一次迭代中jQuery.each()UTIL?
-
20-08-2019 - |
题
我试图通过元件的阵列进行迭代。 jQuery的文档说:
返回非假相同在for循环中continue语句,它会立即跳到下一迭代。
我已经打过电话“返回非假的;”和“非假;” (没有返回)均未跳到下一迭代。相反,他们打破循环。我错过什么?
解决方案
它们通过非假的意思是:
return true;
因此,这代码:
var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
if(arr[i] == 'three') {
return true;
}
alert(arr[i]);
});
将提醒一个,两个,四个,五个
其他提示
通过“返回非假”,他们的意思是要返回的将不会制定出布尔值false任何价值。所以,你可以返回true
,1
,'non-false'
,或任何其他你能想到的。
的Javascript形式的具有“感实性”和“falsiness”的想法。如果一个变量的值,然后,通常9AS你会看到),它有“感实性” - 空,或没有价值趋向“falsiness”。下面可能有助于片段:
var temp1;
if ( temp1 )... // false
var temp2 = true;
if ( temp2 )... // true
var temp3 = "";
if ( temp3 ).... // false
var temp4 = "hello world";
if ( temp4 )... // true
希望帮助?
此外,它的值得检查从道格拉斯Crockford的这些视频
更新:感谢@cphpython为察觉的损坏的链接 - 我在现在的工作版本更新,以点
不要忘记,你可以有时只是脱落块的末尾才能到下一个迭代:
$(".row").each( function() {
if ( ! leaveTheLoop ) {
... do stuff here ...
}
});
,而不是实际的返回这样的:
$(".row").each( function() {
if ( leaveTheLoop )
return; //go to next iteration in .each()
... do stuff here ...
});
在循环的只有的休息,如果你回到字面上false
。例如:
// this is how jquery calls your function
// notice hard comparison (===) against false
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
break;
}
这意味着你可以返回其他任何东西,包括undefined
,这是你回报什么,如果你什么也不返回,所以你可以简单地用一个空的return语句:
$.each(collection, function (index, item) {
if (!someTestCondition)
return; // go to next iteration
// otherwise do something
});
这是可能的,这可能因版本而异;这是适用于jQuery的1.12.4。但实际上,当你退出了该函数的底部,你也没有回来,这就是为什么循环继续,所以我希望,有没有可能任何这回没有什么可以的不的继续环。除非他们想迫使大家开始返回的东西,以保持循环下去,什么都不返回的的的是一种方式继续下去。
jQuery.noop()可以帮助
$(".row").each( function() {
if (skipIteration) {
$.noop()
}
else{doSomething}
});
不隶属于 StackOverflow