我有一个$ .each jQuery函数坐在父javascript函数中,如何在某个索引(i)上打破父函数?
答案 0 :(得分:10)
要从一个循环中断,只需返回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 implements 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;
}
});
答案 1 :(得分:6)
从它的声音来看,你有类似的东西:
function outer(someParam) {
$.each(someParam, function(i) {
// do something with each value in someParam
});
}
当内循环达到某个值时,您希望从outer
返回。你不能一气呵成。关键点是从return false
回调中执行$.each
会结束“循环”。然后,如果需要,可以设置变量以有条件地返回:
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
}
答案 2 :(得分:0)
我能想到的唯一解决方案是在父函数上设置一个变量(开关),在每个函数中,如果i == x,在更改开关后先断开每个函数...然后检查switch值确定是否中断父函数。
答案 3 :(得分:0)
你会做类似的事情:
function foo() {
var success = true;
$('element').each(function() {
if (condition) {
success = false;
return success;
}
});
if (!success)
return false;
//should not get here
}
答案 4 :(得分:0)
outerloop:
for (;;)
{
for (;;)
{
break; /* breaks inner loop */
}
for (;;)
{
break outerloop; /* breaks outer loop */
}
}