Javascript 中断jQuery的父函数每个函数
我有一个$。每个jQuery函数位于父javascript函数中,如何在某个索引(I)上断开父函数?要断开一个循环,只需返回Javascript 中断jQuery的父函数每个函数,javascript,jquery,Javascript,Jquery,我有一个$。每个jQuery函数位于父javascript函数中,如何在某个索引(I)上断开父函数?要断开一个循环,只需返回false: $('something').each(function() { if (need_to_break) { return false; // returning false stops the loop } }); 要立即从多个循环中断/返回每个循环,只需抛出一个异常: var $break = {}; $('somethin
false
:
$('something').each(function() {
if (need_to_break) {
return false; // returning false stops the loop
}
});
要立即从多个循环中断/返回每个循环,只需抛出一个异常:
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就是这样的
更为传统的解决方案:
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;
}
});
我能想到的唯一解决方案是在父函数上设置一个变量(开关),在每个函数中,若I==x,在更改开关后首先中断每个函数。。。然后检查开关值以确定是否中断父函数。您可以执行以下操作:
function foo() {
var success = true;
$('element').each(function() {
if (condition) {
success = false;
return success;
}
});
if (!success)
return false;
//should not get here
}
从它的声音,你有这样的东西:
function outer(someParam) {
$.each(someParam, function(i) {
// do something with each value in someParam
});
}
当内部循环达到某个值时,您希望从外部返回。你不可能一下子做到这一点。关键是从$执行返回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
}
标记中断
outerloop:
对于(;;)
{
对于(;;)
{
中断;/*中断内部循环*/
}
对于(;;)
{
断开外部循环;/*断开外部循环*/
}
}
您所说的“中断父函数”是什么意思?你是说“返回父函数”吗?OP没有提到“多个”每个循环。我个人认为使用try-catch不是正确的方法,就像在服务器端一样。它用于意外错误,所有其他错误都应处理。请参阅我的答案以获得替代解决方案。这只捕获中断异常,因此在这方面是完全安全的。是的,这很不传统。但这实际上是一种非常有效的方法;如果您尝试以其他方式(使用多个嵌套循环)执行此操作,您将看到1。你所做的正是投掷/接球所能做的。这更难阅读和理解。btw return和return false有区别吗?@Brandon在$中。每个
处理程序都必须返回false
才能中断循环。如果你能给出一个更精确的例子来说明你在做什么,那么给你一个更精确的答案就更容易了。