ホームページ ウェブフロントエンド jsチュートリアル JSイベントバインディング_JavaScriptスキルの深い理解

JSイベントバインディング_JavaScriptスキルの深い理解

May 16, 2016 pm 04:43 PM
イベントバインディング

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 ライブラリは、データ バインディング メカニズムの優れたカプセル化効果を実現していますが、それを知っているだけで、その理由がわからないまま、具体的な実装を直接分析することはできません。突然悟ったような気分になるとともに、互換性があり汎用性の高いプログラムを作成するには、多くの内容を検討し、多くの問題を解決する必要があることにも気づき、これらの問題が徐々に明確になってきます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

jqueryでイベントをバインドする方法は何通りありますか? jqueryでイベントをバインドする方法は何通りありますか? Nov 09, 2020 pm 03:30 PM

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

UniApp エラーの問題を解決します:「xxx」イベントがバインドされていません UniApp エラーの問題を解決します:「xxx」イベントがバインドされていません Nov 25, 2023 am 10:56 AM

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

要素にイベントを追加するにはどうすればよいですか? JS バインディング イベントを解析する 3 つの方法 要素にイベントを追加するにはどうすればよいですか? JS バインディング イベントを解析する 3 つの方法 Aug 04, 2022 pm 07:27 PM

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

jqueryバインディングイベントの機能は何ですか jqueryバインディングイベントの機能は何ですか Mar 20, 2023 am 10:52 AM

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

jQuery イベント バインディング テクノロジの詳細な説明 jQuery イベント バインディング テクノロジの詳細な説明 Feb 26, 2024 pm 07:36 PM

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

Vue アプリケーションで「クリック」イベント バインディングが無効な場合はどうすればよいですか? Vue アプリケーションで「クリック」イベント バインディングが無効な場合はどうすればよいですか? Jun 24, 2023 pm 03:51 PM

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

Vue ドキュメントでのイベント バインディング関数パラメーターの使用方法 Vue ドキュメントでのイベント バインディング関数パラメーターの使用方法 Jun 20, 2023 pm 02:06 PM

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

jQueryイベントバインディング技術の詳細な分析 jQueryイベントバインディング技術の詳細な分析 Feb 26, 2024 pm 06:33 PM

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

See all articles