2012-12-10 9 views
7

私はここに光テストの事の簡単なデモを作成しました:その後、http://cl.ly/LSDl、それは基本的に、特定のポイントまで行くと:私はこれを取得クロームdevのツールを使用してメモリ使用量を記録するとhttp://jsfiddle.net/CGr9d/.mousemoveとmemory、これを最適化する必要はありますか?

をもう一度下って、前の高いポイントに再び到達するまで開始してください。

これは正常/ OKですか? メモリを節約するためにコードを最適化する方法はありますか?

これは私のMouseMove機能である:

$('body').mousemove(function(e) { 
    //2000 is half the image width/height, of course used for centering 
    $('.light-circle').css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' }); 
}); 

感謝。

+0

WTFです。クールなデモのために+1 – defau1t

+1

+1 +1 –

+0

それはちょうど本当に、本当にクールです。すばらしくシンプルでとてもクールです。 –

答えて

4

セレクタ.light-circleに一致する要素は変更しない場合、あなたはこのようなビットを最適化することができます。

var circles = $('.light-circle'); 
$('body').mousemove(function(e) { 
    //2000 is half the image width/height, of course used for centering 
    circles.css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' }); 
}); 

あなたはDOM、新しいjQueryオブジェクトを割り当てるなど、再照会していないその方法マウスの動きごとに、等。

ガベージコレクトされた環境では、メモリが増加してから減少し、再び増加することは完全に正常です。

+0

さらに、 'class'の代わりに' id'を与えても、アクセスするのに少し早くする必要があります...今はあなたがキャッシュしていることは問題ではありませんね:) – Ian

+0

それは理にかなっています!どうもありがとう。 –

+0

@KristofferK:心配しないで、喜んで助けた! –

関連する問題