私は完全にajaxによって駆動されるサイトを持っています。 ページがロードされると、ページはリフレッシュされない限り完全に再ロードされません。私はいくつかの異なるアプリケーションをこのサイトで実行していますが、ドキュメントレベルでイベントハンドラを追加するために.on()を使用していますが、特定のアプリケーションがサイトで使用されている場合にのみ適用してください。不要なイベントハンドラでサイトを飽和させるのを避けるために、ユーザーがアプリケーションを切り替えるときに$(document).off()を使用する副作用があるかどうか疑問に思っています。これにより、新しいイベントを追加する前に、すべてのイベントをクリアする必要があります。私はちょうど私が知っていないものをアンバインドしていないことを確認したい。
回答:
回答№1は2jQueryイベントを使用することができます 名前空間。 $(document)にイベントを追加するには、アプリケーション名を名前空間として使用し、同じ名前空間を使用してアプリケーション名をすべて削除します。
たとえば、アプリケーション名が「appA」で、一連のイベントのイベントリスナーを追加する場合は、次のようにします。
$(document).on("resize.appA", function() { });
$(document).on("anotherEvent1.appA", function() { });
$(document).on("anotherEvent2.appA", function() { });
ドキュメント上のすべてのアプリケーションイベントを削除するには、次のようにします:
$(document).off(".appA");
btw - これはイベントでのみ動作します文書に追加され、子どもには適用されません。子供にも影響を与えたい場合は、イベントを$(document)にバインドし、イベントの委譲を使用して子供に影響を与えます。このようにして、すべてのアプリイベントを一度に削除できます。