javascript - jQuery はイベントを削除するために off() をどのように実装しますか?
高洛峰
高洛峰 2017-06-12 09:27:06
0
2
1239

jQuery でイベントをバインドする各メソッドには、on() に対応する off()、bind() に対応する unbind()、live() に対応する die() など、イベント バインディングを削除する対応するメソッドがあることがわかっています。 , この匿名イベントのバンドル解除がどのように達成されるのか非常に興味があります。jQuery のソース コードは難解すぎて理解しにくいです。実装原理を分析するためにコードの簡略化されたバージョンを投稿できる専門家はいますか?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
phpcn_u1582

off 処理を理解するには、まず on 操作を理解する必要があると思います。昨年 jquery2.x のソース コードを読みましたが、イベントの部分は非常に複雑です。

大まかなメモに目を通したところ、事件を説明するビデオには、見なければならないことについて何も言及されていないことがわかりました。

イベントのバインディングについては、ソースコードの実装と jquery.event.add メソッドを組み合わせることができます。

私の理解では、jqueryは主に要素のキャッシュデータキャッシュを設定し、キャッシュにはイベント変数(イベントコールバックキューコレクション)が保存され、特定のDOMに複数回追加するために「イベント」:「コールバック関数配列」の形式で保存されます。イベントが発生すると、コールバックをトリガーできますが、実際にネイティブ イベントにバインドされるのは、コールバック関数配列のトラバーサル実行です。

off に関しては、まず off のソースコード部分を見てみましょう:

リーリー

最後の文を見ると、実際に

メソッドを呼び出していることがわかります。 jQuery.event.remove

削除メソッド

リーリー

主に、要素が以前にオンになったときに、キャッシュに格納されているイベント変数からイベントのキーと値のペアを削除するなどの操作を実行します。

単に

の場合は、イベント内のクリックイベントに対応するコールバック関数グループを直接走査して削除することになります。offパラメータにも特定のコールバック関数を渡す場合は、コールバック配列を走査して比較し、削除することになります。対応するコールバック関数 …$(xx).off('click')

jquery ソース コードについては、初期の基本部分について Miaowei Classroom のビデオを参照することをお勧めします。その他の情報については、http://www.cnblogs.com/aaronj... でダニエルのブログ投稿を参照するか、購入することができます。 jQuery ソースコード分析に関する同様の本。

ソースコードは細かい部分が多すぎて、しばらく整理できません==なので、大まかな内容を記載します...誤解があればご指摘ください~

いいねを押す +0
phpcn_u1582

以下はonのコードです

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート