要素からすべての「特定の」ハンドラー (onclick など) を削除する方法や、要素からすべてのイベントを削除する方法などについて、たくさんの質問があります。
この質問は少し広いです。IE7 および IE8 の asp.net サイトで大量のメモリ リークが発生していました。これらのリークを縮小する調整の 1 つは、ページ上のすべての要素からすべてのイベントをバインド解除することでした。基本的にこれ:
$('*').off();
現在、アプリケーションのパフォーマンスを改善しようとしていますが、当然のことながら、この特定の行はホット スポットの 1 つです。
したがって、問題は、同じ結果 (ドキュメント内のすべての要素からすべてのハンドラーを明示的に削除する) をより効率的に達成する方法はありますか?
ノーゴーオプション:
- 「ページをリロード」 - メモリ リークはこの方法で保持されます。
- 「ハンドラーをアタッチするたびに、配列に格納します」-そのような場所が多すぎます
私が考えていたのは、いくつかの jQuery 内部 (おそらく非パブリック API) を使用して、ハンドラーが添付された要素の検出を活用することです。しかし、それは私の現在の jQuery の能力をわずかに上回っています。それが役に立てば、jQuery 1.7.1 をターゲットにしています。