3

使用 .each() 函数来打破 each() 循环,我们可以使用 return false。

例如

$( "div" ).each(function( index, element ) {
     alert('Bye...!');
     return false;
});

但是,返回任何字符串值时它将如何工作?

var myDiv = $( "div" ).each(function( index, element ) {
     return "xyz";
});
4

5 回答 5

2

简短的回答:

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活着。

小提琴:http: //jsfiddle.net/aXkcW/19/

于 2013-11-13T08:00:37.243 回答
1

您可能需要使用map()

var myDiv = $( "div" ).map(function( index, element ) {
     return "xyz";
});

返回"XYZ"内容对我来说没有多大意义,您可能需要返回其他内容。

$.map() 方法将函数应用于数组或对象中的每个项目,并将结果映射到新数组中。在 jQuery 1.6 之前,$.map() 只支持遍历数组。从 jQuery 1.6 开始,它还遍历对象,引用.

于 2013-11-13T07:27:17.563 回答
0

使用 foreach 遍历一组元素并对它们或从它们执行一些操作,但我没有看到返回任何内容的意义,因为 return 会破坏 foreach 循环:

        $("div").each(function () {
            // update all divs text
            $(this).html = "new text";
        });
于 2013-11-13T07:33:05.487 回答
0

你可以用一个标志..

小提琴

 var flag = false;
 $( "div" ).each(function( index, element ) {     
     if(!flag){
         flag=true;
         alert(index);
         return "xyz";
     }
 });
于 2013-11-13T07:35:41.157 回答
0

在 .each() 循环中返回任何常量意味着返回 true。

还,

 var myDiv = $( "div" ).each(function( index, element ) {
                  return "xyz";
             });

上面的代码等价于

 var myDiv = $( "div" );

检查这个小提琴

于 2013-11-14T10:07:06.817 回答