jQuery.map()和迭代

时间:2010-10-29 16:32:22

标签: jquery map iteration

我正在通过O'Reilly jQuery Cookbook 。在第65页有一个例子,我看起来不对,但我是jQuery的新手(不到一个星期),所以我觉得我很可能是一个困惑的人。

该代码旨在从有序列表中获取前三个项目&和他们做点什么;为了简单起见(在书的部分)选择器中,页面上只有一个列表。

他们提供以下代码(我略有简化,但不在相关部分);外部的两个层当然是样板(一个闭包,以便$可以根据需要工作,并且代码可以在页面加载时触发)。

(function($){
    $(document).ready(function(){
        var arr = $.map($('li'), function(item, index){
            while (index < 3)
            {
                 return $(item).html();
            }
            return null;
        });
        /* do something with the resulting array; 
           I've deliberately simplified from the book here */
        alert(arr.join(",");
    });
})(jQuery);

显式迭代(while)对我没有意义。据我了解,内部匿名函数应该为数组的每个元素调用一次,所以我期望if,而不是while

3 个答案:

答案 0 :(得分:1)

此循环永远不会执行多次。它在功能上等同于if,我确信这是作者写的意思。

O'Reilly网站上有一个unconfirmed errata list

答案 1 :(得分:0)

是的,你的理解是正确的。这是一个糟糕的例子。

答案 2 :(得分:0)

该代码 应该<{1}},if仅因while而存在,这有点滥用{{1}在这种情况下,IMO。

作为:lt()的插图,您可以将整个示例缩短为:

return