给出清单
<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() );
});
});
这段代码通常会返回每个元素,为什么?为什么列表在第一次迭代时没有被清除?
答案 0 :(得分:8)
在第一次迭代中确实清除了无序列表,但是您使用$("ul li")
创建的jQuery对象仍然引用了列表项。
它们可能不再是DOM的一部分,但它们仍然存在于内存中,您仍然可以访问和操作它们。
答案 1 :(得分:1)
.each()
函数会创建一个闭包:这就是闭包的全部内容。
当行$("ul").empty();
执行时,它会清除对列表的引用,但因为同一列表也被this
引用,所以列表仍然存在,只是没有引用$("ul li")
了。