jQuery でイベントをバインドする各メソッドには、on() に対応する off()、bind() に対応する unbind()、live() に対応する die() など、イベント バインディングを削除する対応するメソッドがあることがわかっています。 , この匿名イベントのバンドル解除がどのように達成されるのか非常に興味があります。jQuery のソース コードは難解すぎて理解しにくいです。実装原理を分析するためにコードの簡略化されたバージョンを投稿できる専門家はいますか?
phpcn_u15822017-06-12 09:29:06
off 処理を理解するには、まず on 操作を理解する必要があると思います。昨年 jquery2.x のソース コードを読みましたが、イベントの部分は非常に複雑です。
大まかなメモに目を通したところ、事件を説明するビデオには、見なければならないことについて何も言及されていないことがわかりました。
イベントのバインディングについては、ソースコードの実装と jquery.event.add メソッドを組み合わせることができます。
私の理解では、jqueryは主に要素のキャッシュデータキャッシュを設定し、キャッシュにはイベント変数(イベントコールバックキューコレクション)が保存され、特定のDOMに複数回追加するために「イベント」:「コールバック関数配列」の形式で保存されます。イベントが発生すると、コールバックをトリガーできますが、実際にネイティブ イベントにバインドされるのは、コールバック関数配列のトラバーサル実行です。off に関しては、まず off のソースコード部分を見てみましょう:
リーリー
最後の文を見ると、実際に メソッドを呼び出していることがわかります。 jQuery.event.remove
リーリー
主に、要素が以前にオンになったときに、キャッシュに格納されているイベント変数からイベントのキーと値のペアを削除するなどの操作を実行します。単に
の場合は、イベント内のクリックイベントに対応するコールバック関数グループを直接走査して削除することになります。offパラメータにも特定のコールバック関数を渡す場合は、コールバック配列を走査して比較し、削除することになります。対応するコールバック関数 …$(xx).off('click')
ソースコードは細かい部分が多すぎて、しばらく整理できません==なので、大まかな内容を記載します...誤解があればご指摘ください~