我有一个$.each jQuery函数位于父javascript函数中,我如何在特定索引(i)处终止父函数?
要退出循环,只需返回 false
:
$('something').each(function() {
if (need_to_break) {
return false; // returning false stops the loop
}
});
each
循环中跳出/返回,请抛出异常:var $break = {};
$('something').each(function() {
try {
$('something').each(function() {
$('something').each(function() {
$('something').each(function() {
throw $break;
});
});
});
} catch(E) {
if (E != $break) throw E;
}
});
并在您想要返回的循环中捕获它。
这就是Prototype.js如何实现break
,例如在它们的Enumerable.each()
中。
更传统的解决方案:
var do_break = false;
$('something').each(function() {
$('something').each(function() {
$('something').each(function() {
$('something').each(function() {
do_break = true;
return false;
});
if (do_break) {
return false;
}
});
if (do_break) {
return false;
}
});
if (do_break) {
return false;
}
});
function outer(someParam) {
$.each(someParam, function(i) {
// do something with each value in someParam
});
}
当内部循环达到某个值时,你希望从outer
返回。但你无法一次性完成这个任务。关键在于,如果从$.each
回调函数中使用return false
,则会结束“循环”。然后,如果需要,可以设置一个变量进行有条件的返回:
function outer(someParam) {
var returnNow = false;
$.each(someParam, function(i) {
if (i === 5) {
returnNow = true;
return false;
}
// do something with each value in someParam
});
if (returnNow) {
return;
// return immediately
}
// do some other action if you want to
}
$.each
处理程序中,您必须返回false
以终止循环。如果您可以给出一个更精确的示例,那么我们就可以更容易地给出更精确的答案。 - lonesomeday你可以这样做:
function foo() {
var success = true;
$('element').each(function() {
if (condition) {
success = false;
return success;
}
});
if (!success)
return false;
//should not get here
}
outerloop:
for (;;)
{
for (;;)
{
break; /* breaks inner loop */
}
for (;;)
{
break outerloop; /* breaks outer loop */
}
}