我想知道是否有可能从回调函数中突破“超级函数”。我简化了我的代码以使其更具可读性
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return; //But I want to break out from isClicked()
});
}
我本能地编写了这段代码,但我很快意识到我的推理是错误的,只能从当前迭代的回调中恢复。
所以基本上,我的问题是是否有可能在回调中突破isClicked()。
我的问题有一个简单的方法,但我想知道上面是否可能
答案 0 :(得分:1)
返回false会阻止.each()继续迭代:
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //Returning false ends the .each() iterating
});
}
问题中提供的代码并不需要,但我有时需要使用嵌套循环执行以下操作(在提供的情况下不需要):
function isClicked() {
for (i=0;i<variable.length;i++) {
var userInputs = $("input");
var done = false;
userInputs.each(function (index, element) {
if ($(element).val() === "") {
done = true;
return false; //Returning false ends the .each() iterating
}
});
if (done)
return true;
}
}
答案 1 :(得分:0)
所以你可以使用jQuery's .eq():
function isClicked() {
var userInputs = $("input");
for(var i=0; i<userInputs.length; i++) {
if (userInputs.eq(i).val() === "")
return; //But I want to break out from isClicked()
});
}
答案 2 :(得分:0)
我不明白为什么你要从主函数中脱离出来,无论如何,一旦每个循环完成,执行就会停止。
虽然您可以更正代码,但不是从继续循环的每个循环中返回任何内容,如果您想要中断循环,则可以返回false。
($(element).val()===&#34;&#34;) 返回false;
function isClicked() {
var userInputs = $("input");
var returnval = userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //But I want to break out from isClicked()
});
return "something"; //return something or nothing
}