検索

ホームページ  >  に質問  >  本文

javascript - jQuery はイベントを削除するために off() をどのように実装しますか?

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

高洛峰高洛峰2766日前1260

全員に返信(2)返信します

  • phpcn_u1582

    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')

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

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

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-06-12 09:29:06

    以下はonのコードです

    リーリー

    返事
    0
  • キャンセル返事