5

与えられたリスト

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

jsコード:

$(document).ready( function () {

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

          $("ul").empty();

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

    });

});

このコードはすべての要素を正常に返します、なぜですか?最初の反復でリストがクリアされないのはなぜですか?

4

2 に答える 2

8

順序付けされていないリストは、最初の反復で実際にクリアされますが、リストアイテムは、で作成したjQueryオブジェクトによって引き続き参照されます$("ul li")

それらはもはやDOMの一部ではないかもしれませんが、それらはまだメモリに存在しており、それらにアクセスして操作することができます。

于 2013-03-25T11:21:52.993 に答える
1

この.each()関数はクロージャを作成します。それがクロージャのすべてです。

$("ul").empty();が実行されると、リストへの参照がクリアされますが、同じリストもで参照されているためthis、リストはまだそこにあり、参照されてい$("ul li")ません。

于 2013-03-25T11:24:32.937 に答える