JSイベントバインディング_JavaScriptスキルの深い理解
1. 伝統行事モデル
従来のイベント モデルには制限があります。
インライン モデルは HTML タグ属性の形式で使用され、HTML と混合されます。この方法は間違いなく変更や拡張の問題を引き起こすため、現在ではほとんど使用されていません。
スクリプト モデルは、イベント処理関数を js ファイルに書き込み、ページから要素を取得し、対応するイベント関数をバインドして実行をトリガーします。しかし、欠点もあります:
1. イベントは複数のイベント リスニング関数にバインドされており、後者は前者をオーバーライドします。
2. 繰り返しのバインディングを制限する必要がある状況
3. 標準化されたイベント オブジェクト
2. モダンなイベント バインディング
DOM2 レベルのイベントは、イベントを追加および削除するための 2 つのメソッド、addEventListener() と RemoveEventListener() を定義します。これらはそれぞれ、イベント名、関数、バブリングまたはブール値のキャプチャ (true はキャプチャを意味し、false はバブルのリスクを意味します) の 3 つのパラメータを受け取ります。
同様に、IE には、attachEvent() と detachEvent() という 2 つの同様のメソッドが用意されていますが、IE の 2 つのメソッドには別の問題があります。つまり、this オブジェクトを渡すことができません (IE では、call メソッドを使用できます)。オブジェクトの偽装:
function addEvent(obj,type,fn){ if(typeof obj.addEventListener != 'undefined'){ obj.addEventListener(type,fn,false); }else if(obj.attachEvent != 'undefined'){ obj.attachEvent('on' + type,function(){ fn.call(obj,window.event); }); } };
しかし、追加時に匿名関数が実行されるため、追加後に削除することができず、また、IE が提供する方法では、バインディング イベントを連続的に実行できず、メモリ リークが発生するという問題が発生します。
この一連の問題を解決するには、メソッドをさらにカプセル化する必要があります。他のブラウザでは DOM2 レベルの標準を使用し、IE では従来のモードに基づいて追加と削除を使用します。 >
1. 追加では、オブジェクト イベントを格納するために JS ハッシュ テーブルを使用し、追加された呼び出し順序に従って、最初に同じ処理関数が存在するかどうかを判断し、存在しない場合はイベントを順番にバインドします。 . 関数がハッシュ テーブルに追加されるため、連続して実行できず、繰り返し追加される問題が解決されます2.削除する際はトラバーサル関数の一致を判定し、存在する場合は削除します
概要:
私はこれまで JS イベント バインディングについて深く理解しておらず、従来のイベント バインディング モデルに留まっており、今回はカプセル化について学ぶことができてとても勉強になりました。 JS 上のオブジェクト指向アプリケーション。 JQuery に似た JS ライブラリは、データ バインディング メカニズムの優れたカプセル化効果を実現していますが、それを知っているだけで、その理由がわからないまま、具体的な実装を直接分析することはできません。突然悟ったような気分になるとともに、互換性があり汎用性の高いプログラムを作成するには、多くの内容を検討し、多くの問題を解決する必要があることにも気づき、これらの問題が徐々に明確になってきます。
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









jquery でイベントをバインドするには、bind()、live()、delegate()、および on() メソッドの 4 つの方法があります。bind() メソッドはイベントを既存の要素にのみバインドできますが、 live() )、on () および delegate() はすべて、今後新しく追加される要素のイベント バインディングをサポートします。

UniApp を使用してアプリケーションを開発するときに、次のエラー メッセージが表示される場合があります。「xxx」イベントがバインドされていません。これは UniApp のイベント バインディング メカニズムが原因で発生するため、この問題を解決するにはこのメカニズムを正しく設定する必要があります。 1. 問題の原因 UniApp では、ページコンポーネントのイベントバインディングは v-on 命令によって完了します。たとえば、テンプレートにボタン コンポーネントを追加します: <button@click="onClick">Click Me</butto

JavaScript はスクリプト言語として、ページ上の要素にイベントをバインドできるため、指定されたイベントが発生すると、対応するイベント ハンドラーを自動的に呼び出してイベントを処理できます。では、要素にイベントを追加するにはどうすればよいでしょうか?次の記事では、JS でイベントをバインドする 3 つの方法を紹介します。

jqueryバインディングイベントの機能: 通常のイベントをDOMノードにバインドする DOMノードが選択されている場合、イベントをそれにバインドして、ユーザーが対応する操作を提供しやすくします。 jQuery には、bind、live、delegate、on という 4 つのイベント バインディング メソッドが用意されており、対応するアンリスニング関数は unbind、die、undelegate、off です。

jQuery は、Web ページでの対話性を処理するために広く使用されている人気のある JavaScript ライブラリです。中でもイベント バインディングは jQuery の重要な機能の 1 つであり、イベント バインディングを通じてユーザー インタラクションへの応答を実現します。この記事では、jQuery イベント バインディング テクノロジについて説明し、具体的なコード例を示します。 1. イベント バインディングの基本概念 イベント バインディングとは、特定のイベントが発生したときに指定された操作を実行するために、DOM 要素にイベント リスナーを追加することを指します。 jQuery で、目的の

Vue は、最新の Web アプリケーションを構築するための人気のある JavaScript フレームワークです。 Vue では通常、ディレクティブを使用して DOM 要素を操作します。その中でも「クリック」イベントはよく使われる命令の一つですが、Vue アプリケーションでは「クリック」イベントのバインディングが無効になる状況によく遭遇します。この記事では、この問題を解決する方法について説明します。要素が存在するかどうかを確認する最初のステップは、「クリック」イベントをバインドする要素が存在するかどうかを確認することです。要素が存在しない場合は、

Vue は、データ駆動型のアイデアを使用して開発プロセスを簡素化する人気のある JavaScript フレームワークです。 Vue のイベント バインディング機能は非常に強力で、ページ内のさまざまなインタラクションを処理できます。 Vueの開発過程ではイベントバインディング関数のパラメータがよく使われますが、この記事ではこの関数の使い方を詳しく紹介します。 Vue では、v-on ディレクティブを使用してイベントをバインドできます。 v-on ディレクティブの後には、イベント名とイベント処理関数が続きます。例: <bu

jQuery は、要素の選択、DOM 操作、イベント処理など、Web 開発における多くの一般的なタスクを簡素化する人気の JavaScript ライブラリです。 jQuery では、イベント バインディングは非常に一般的で重要な操作の 1 つです。この記事では、jQuery のイベント バインディング メソッドについて詳しく説明し、読者がこれらのメソッドをよりよく理解して適用できるように、特定のコード例を使用します。 1.bind() メソッド binding() メソッドは、最も伝統的で一般的に使用されるイベント バインディング メソッドの 1 つです。できる
