私は次のコードを持っている:Javascriptの無名関数
for (var i=0; i < 20; i++) {
var itemButton = $('<button />').click(function(){ alert('Hello'); }).append('Hello');
$('#container').append(itemButton);
}
私はonclickの機能をそれぞれのボタンの多くを作成します。それから私は$('#shopSearchTopBar').empty();
を使用して#コンテナをクリアし、ボタンをもう一度作成します。
私の質問です:これはメモリリークの可能性がありますか? Javascriptは、#container上で.empty()メソッドを呼び出すか、メモリが解放されたときに初めて作成した匿名関数に使用されるメモリを解放しますか?自分の新しい匿名関数を持つ20個の新しいボタンを安全に追加できますか?
click()の代わりにbind()を使用します。提示する方法ではなくqndを使用します。 – yoda
@yoda:ハンドラーを割り当てるための 'bind'と' click'の間に機能的な違いはありません。 – user113716
@patrick dw:そこにチェックしてください:http://api.jquery.com/bind/あなたはコードを短くすることができます。また、マークアップが頻繁に変更される場合は、live()をお勧めします。 – yoda