0

私の webapp が開始する前に、最初にすべての dom 要素を作成し、プリロードされた配列に格納したいとしましょう。何かのようなもの:

for (i = 1...100) { preLoader.push($('<div id="' + i + '" />')); }

その後、アクションに応じて、配列から正しい要素を取得し、DOM に追加します。
ここで私の質問は次のとおりです。後で行う場合:

$(div#i).remove()

preLoader 配列にも影響しますか、それとも DOM 内のものとは異なる参照ですか?

4

2 に答える 2

2

プリローダー配列にも影響しますか

いいえ、そうではありませんオブジェクトは、アクセスする方法がない場合にのみ、メモリから削除されます。これは、オブジェクトへの参照ではありません。の後$('div#'+i).remove()、DOM からアクセスすることはできませんが、引き続きアクセスすることはできます。そのため、配列からオブジェクトを明示的preLoader[i-1]に削除する必要があります。preLoader

preLoader.splice(i-1,1);
于 2012-07-28T17:28:02.887 に答える
1

DOM 内のオブジェクトは同じです。同じタグをもう一度再利用したい場合は、呼び出す必要があります

$(div#i).detach();

jquery ドキュメントから:

.detach() メソッドは、.detach() が削除された要素に関連付けられたすべての jQuery データを保持することを除いて、.remove() と同じです。このメソッドは、削除された要素を後で DOM に再挿入する場合に便利です。

.remove() を使用すると、削除される要素に関連するイベントとデータが失われます。ただし、 remove() を使用しても、 .appendTo() を再度呼び出すことで、後で同じ要素を再利用できます。

フィドラーの例: http://jsfiddle.net/sKRCF/1 (アラートについて申し訳ありませんが、簡単な方法です)。

于 2012-07-28T17:20:29.907 に答える