使用 .each() 函数来打破 each() 循环,我们可以使用 return false。
例如
$( "div" ).each(function( index, element ) {
alert('Bye...!');
return false;
});
但是,返回任何字符串值时它将如何工作?
var myDiv = $( "div" ).each(function( index, element ) {
return "xyz";
});
return
不会以这种方式工作,$.each.
而只会退出 foreach 循环。
var myDiv = $( "div" ).each(function( index, element ) {
return "xyz";
});
console.log(myDiv);
这将输出undefined
. 让我们尝试不同的事情并比较输出:
我同意在Jquery 文档中不够清楚,他们只是说:“您可以通过返回 false 从回调函数中停止循环。” 返回变量或返回 true 怎么样?让我们比较不同的功能:
var stores = ["C", "B", "A"];
function HasC() {
$(stores).each(function (i, s){
if(s=="C")
//yes, we have a C, so let's return true
return true;
});
}
function HasB() {
var b = false;
$(stores).each(function (i, s){
if(s=="B"){
b=true;
return b;
}
});
}
function HasA() {
var a = false;
$(stores).each(function (i, s){
if(s=="A"){
a = true;
return false;
}
});
return a;
}
HasC()
之后会返回undefined
,但会迭代所有元素,不会中断HasB
也会返回undefined
,因为b
变量上下文就在每个函数内部。HasA()
将返回true
并按预期工作,因为一旦我们找到“A”,我们使用停止循环return false
,然后在循环之后我们仍然var a
活着。使用 foreach 遍历一组元素并对它们或从它们执行一些操作,但我没有看到返回任何内容的意义,因为 return 会破坏 foreach 循环:
$("div").each(function () {
// update all divs text
$(this).html = "new text";
});
你可以用一个标志..
见小提琴
var flag = false;
$( "div" ).each(function( index, element ) {
if(!flag){
flag=true;
alert(index);
return "xyz";
}
});
在 .each() 循环中返回任何常量意味着返回 true。
还,
var myDiv = $( "div" ).each(function( index, element ) {
return "xyz";
});
上面的代码等价于
var myDiv = $( "div" );
检查这个小提琴