如果某个条件成立,我试图突破循环。我的代码工作正常,直到我尝试添加中断。在运行时,VS2010和IE8中的intellisense错误告诉我,我不能在循环之外突破,但我不认为我。
我完全糊涂了,所以希望有人可以指出一些我可以忽略的东西!
var value1 = "hello";
$.each(myJsonObject.SomeCollection, function () {
if (value1 == this.value2) {
alert("Found it!");
exitFlag = true;
}
if (exitFlag) break;
});
答案 0 :(得分:1)
只需return false;
即可退出.each
循环。 From the documentation:
我们可以打破
$.each()
循环 通过制作特定的迭代 回调函数返回false
。 返回非假与a相同 for循环中的continue
语句;它 将立即跳到下一个 迭代。
使用jQuery .each
迭代器与使用常规循环不同,因此此处不能使用break
。这就像这样做,这是不可能的:
for (var i = 0; i < 10; ++i) {
myFunc(i);
}
function myFunc(i) {
if (i > 5) {
break; // ILLEGAL
}
}
答案 1 :(得分:1)
jQuery可能没有为.each()
函数使用循环。也许返回false
可能有用(在Python中它可以):
var value1 = "hello";
$.each(myJsonObject.SomeCollection, function () {
if (value1 == this.value2) {
alert("Found it!");
exitFlag = true;
}
if (exitFlag) return false;
});
答案 2 :(得分:0)
如果您的集合可以像数组一样被处理,导航和索引,只需使用常规循环并从中断。或者如果您如此倾向于使用$.each
迭代器来完成这么简单的事情,那么只需让您的函数返回false(这将有效地使$.each
迭代器停止)。
为了重新执行我刚才所说的内容,如果该集合可以被视为一个数组,那么只需使用一个普通的循环。除非你有充分的理由不这样做,否则总是使用最简单,最干净的工具来完成工作。