2011-12-19 6 views
2

アプリで作業していて、それが少し大きすぎるので、私はアプリが主にJavascipt上で動作するのでメモリ管理を改善する方法を考えてきました。したがって、ナビゲーション項目がクリックされるたびにjqueryを空にして、htmlをajaxで表示します。例:

//$.ajaxSetup(); called before this 
//$this is the attached element 
$.ajax({success:function(data){ 
    $this.empty().html(data.output).fadeIn(400); 
    //more javascript stuff like loading tinymce or jquery ui 
}}); 

これはメモリリークを防ぐのに十分ですか?私は空が何であるかは完全にはわかりませんが、他のオブジェクトやイベントと共にそのdiv内のすべてのDOM要素を削除すると仮定していますか? btw。あなたはここにhttp://webproposalgenerator.com/http://webproposalgenerator.com/demoのアプリを見つけることができます。

パフォーマンス/セキュリティの改善に関するヒントやフィードバックは非常に高く評価されます。

+1

あなたにはメモリリークがありますか?これは単なる学術的議論ですか?最新のブラウザでは、開発ツールを使用してメモリリークをチェックできます。あなたが '.empty()'が何をしているのかわからないなら、ここには[documentation](http://api.jquery.com/empty/)があります。子要素とそのデータハンドラとイベントハンドラと要素自体を削除します。 – kubetz

+0

どのブラウザがメモリリークのような動作をしていますか? – Corbin

+0

メモリリークはまだありません。コアフレームワークの大部分をやり直しているので、私はちょうどそれを計画していました。私はPHPで知っているunset()は、メモリブロックをクリアしようとするときに行く方法は、そこにjavascipt/jquery同等ですか? –

答えて

6

$.fn.emptyであれば、要素に関連付けられたすべてのデータとイベントが削除され、要素が削除されます。また、これらの要素に定義されたすべてのjquery-ui widget.jsベースのウィジェットで.widget("destroy")が呼び出されます。あなたが$.fn.htmlを使用している場合

jQueryの$.fn.htmlメソッドがHTMLを追加する前に与えられた要素に$.fn.empty()を呼び出すことに注意することも重要であるので、あなたは実際に私の推測では、ということでした$.fn.empty

1

を呼び出す必要はありません。 htmlが意味する。とにかく、私はそれが本当であると確信していません。パーフォマンスの部分:jqfundamentalsによると、要素がDOMの.detach()にある間に、コンテンツを追加することが推奨されるベストプラクティスです。アドバイスのためにコードをロックしようとしましたが見つかりませんでした。素敵なサイトbtw

関連する問題