Jquery each()函数

时间:2013-03-25 11:19:26

标签: javascript jquery

给出清单

<ul>
    <li>aaa</li>
    <li>sss</li>
    <li>ddd</li>
</ul>

js code:

$(document).ready( function () {

    $("ul li").each( function () {

          $("ul").empty();

          alert( $(this).text() );        

    });

});

这段代码通常会返回每个元素,为什么?为什么列表在第一次迭代时没有被清除?

2 个答案:

答案 0 :(得分:8)

在第一次迭代中确实清除了无序列表,但是您使用$("ul li")创建的jQuery对象仍然引用了列表项。

它们可能不再是DOM的一部分,但它们仍然存在于内存中,您仍然可以访问和操作它们。

答案 1 :(得分:1)

.each()函数会创建一个闭包:这就是闭包的全部内容。

当行$("ul").empty();执行时,它会清除对列表的引用,但因为同一列表也被this引用,所以列表仍然存在,只是没有引用$("ul li")了。