ホームページ ウェブフロントエンド jsチュートリアル バブリング イベントの制限: バブリングを実装できないのはどのような場合ですか?

バブリング イベントの制限: バブリングを実装できないのはどのような場合ですか?

Jan 13, 2024 pm 03:22 PM
イベント 限界 バブリングイベント バブリング 達成できない

バブリング イベントの制限: バブリングを実装できないのはどのような場合ですか?

バブリング イベントの制限: どのような状況ではバブリングが実現できないのでしょうか?

フロントエンド開発では、DOM 要素のイベントを処理するためにイベント バブリングをよく使用します。ただし、バブリングは万能ではなく、バブリングだけではニーズを満たせない場合もあります。この記事では、バブリングが不可能ないくつかの状況について説明し、具体的なコード例を示します。

1. バブリングの防止
通常、イベントのバブリングを防ぐには、Event.stopPropagation() メソッドを使用します。ただし、泡立ちを防止しても望ましい効果が得られない場合があります。

たとえば、親要素と子要素があるとします。子要素がクリックされたときに、親要素のイベント ハンドラー関数が実行される前に、子要素のイベント ハンドラー関数が実行されるようにしたいとします。実行されました。バブリングを防ぐために、子要素のイベント ハンドラーで event.stopPropagation() を使用することもできます:

<div id="parent">
  <div id="child"></div>
</div>

<script>
document.getElementById('child').addEventListener('click', function(event) {
  event.stopPropagation();
  console.log('子元素点击事件');
});

document.getElementById('parent').addEventListener('click', function() {
  console.log('父元素点击事件');
});
</script>
ログイン後にコピー

ただし、上記のコードではニーズを達成できません。子要素をクリックしてください。子要素のクリックイベントハンドラのみが実行され、親要素のクリックイベントハンドラは実行されません。これは、バブリングを防止してもイベントが親要素に渡されなくなるだけで、子要素のイベント ハンドラーが実行された後に親要素のイベント ハンドラーが実行されることはないためです。

2. イベント委任
イベント委任は、イベント バブリングの原理を使用して、イベントを親要素にバインドし、イベント ソースを判断して対応する処理関数をトリガーします。ただし、イベント委任を使用する場合には制限がある場合があります。

たとえば、複数の li 要素を含む ul 要素があるとします。いずれかの li 要素をクリックすると、その要素のテキスト コンテンツが出力されることを期待します。

<ul id="list">
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
ログイン後にコピー

上記のコードは、ニーズを達成するためにイベント委任を使用することを試みる可能性があります。いずれかの li 要素をクリックすると、要素のテキスト コンテンツが出力されます。ただし、li 要素に a タグを追加し、a タグがクリックされたときにバブリングが防止される場合、イベント委任は正しく機能しません。

<ul id="list">
  <li>1 <a href="#" onclick="event.stopPropagation();">阻止冒泡</a></li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
ログイン後にコピー

上のコードで、リンク「バブリングを防止する」をクリックします。 " の場合、イベント デリゲートは無効になり、何も出力されません。これは、バブリングを防止するとイベントが ul 要素にバブリングできなくなり、イベント デリゲートが対応するイベント ソースを検出できなくなるためです。

3. 非同期イベント処理
場合によっては、ネットワーク要求の実行やその他の時間のかかる操作の実行など、イベントを非同期に処理する必要がある場合があります。ただし、バブリング メカニズムは、非同期イベント処理のニーズを直接満たすことはできません。

たとえば、ボタン要素があるとします。ボタンがクリックされると、データを取得するために非同期リクエストを送信する必要があり、その後、データに基づいてページが更新されます。ボタンのクリック イベント ハンドラーで非同期操作を実行しようとする場合があります。

<button id="btn">点击</button>

<script>
document.getElementById('btn').addEventListener('click', function() {
  setTimeout(function() {
    console.log('异步操作完成');
  }, 1000);
});
</script>
ログイン後にコピー

上記のコードは、ボタンがクリックされてから 1 秒後に「非同期操作が完了しました」を出力します。ただし、ボタンの親要素にクリック イベント ハンドラーがあり、非同期操作の完了後にイベント ハンドラーを実行したい場合、バブリング メカニズムはこの要件を達成できません。

要約すると、バブリングはフロントエンド開発において非常に一般的で強力なメカニズムですが、場合によっては制限もあります。このような場合、ニーズを満たす他のソリューションを見つける必要があります。

以上がバブリング イベントの制限: バブリングを実装できないのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

動画アカウントのコメント制限を解除するにはどうすればよいですか?動画アカウントのコメントの文字数制限はどのくらいですか? 動画アカウントのコメント制限を解除するにはどうすればよいですか?動画アカウントのコメントの文字数制限はどのくらいですか? Mar 22, 2024 pm 02:11 PM

ソーシャルメディアでのビデオアカウントの人気により、ますます多くの人がビデオアカウントを使用して日常生活、洞察、ストーリーを共有し始めています。ただし、一部のユーザーはコメントが制限されているため、混乱や不満を感じる可能性があります。 1. 動画アカウントのコメント制限を解除するにはどうすればよいですか?動画アカウントのコメント制限を解除するには、アカウントが正しく登録され、実名認証が完了していることを確認する必要があります。動画アカウントにはコメント要件があり、実名認証を完了したアカウントのみコメント制限を解除できます。アカウントに何らかの異常がある場合は、コメント制限を解除する前に問題を解決する必要があります。 2. 動画アカウントのコミュニティ基準に準拠します。動画アカウントではコメント内容に一定の基準があり、違法な内容が含まれるコメントの場合は発言が制限されます。コメント制限を解除するには、動画アカウントのコミュニティに従う必要があります

イベント ID 4660: オブジェクトが削除されました [修正] イベント ID 4660: オブジェクトが削除されました [修正] Jul 03, 2023 am 08:13 AM

一部の読者がイベント ID4660 に遭遇しました。何をすればよいかわからないことが多いため、このガイドで説明します。イベント ID 4660 は通常、オブジェクトが削除されたときにログに記録されるため、コンピューター上でイベント ID 4660 を修正する実際的な方法も検討します。イベントID4660とは何ですか?イベント ID 4660 は Active Directory 内のオブジェクトに関連しており、次のいずれかの要因によってトリガーされます。 オブジェクトの削除 – オブジェクトが Active Directory から削除されるたびに、イベント ID 4660 のセキュリティ イベントがログに記録されます。手動変更 – ユーザーまたは管理者がオブジェクトのアクセス許可を手動で変更すると、イベント ID 4660 が生成される場合があります。これは、権限設定の変更、アクセス レベルの変更、またはユーザーやグループの追加または削除を行うときに発生する可能性があります。

iPhone のロック画面で今後のカレンダーイベントを取得する iPhone のロック画面で今後のカレンダーイベントを取得する Dec 01, 2023 pm 02:21 PM

iOS 16 以降を実行している iPhone では、今後のカレンダー イベントをロック画面に直接表示できます。それがどのように行われるかを知るために読んでください。文字盤の複雑機構のおかげで、多くの Apple Watch ユーザーは、手首を一目見て次のカレンダーイベントを確認できることに慣れています。 iOS16 とロック画面ウィジェットの登場により、デバイスのロックを解除しなくても、同じカレンダーのイベント情報を iPhone で直接表示できるようになりました。カレンダー ロック画面ウィジェットには 2 つの種類があり、次に予定されているイベントの時間を追跡したり、イベント名とその時間を表示する大きなウィジェットを使用したりできます。ウィジェットの追加を開始するには、Face ID または Touch ID を使用して iPhone のロックを解除し、長押しします。

JavaScript では、「oninput」イベントの目的は何ですか? JavaScript では、「oninput」イベントの目的は何ですか? Aug 26, 2023 pm 03:17 PM

入力ボックスに値が追加されると、oninput イベントが発生します。次のコードを実行して、JavaScript で oninput イベントを実装する方法を理解してください。例<!DOCTYPEhtml><html> <body> <p>以下のように記述します:</p> <inputtype="text&quot

PHPプロジェクトにカレンダー機能とイベントリマインダーを実装するにはどうすればよいですか? PHPプロジェクトにカレンダー機能とイベントリマインダーを実装するにはどうすればよいですか? Nov 02, 2023 pm 12:48 PM

PHPプロジェクトにカレンダー機能とイベントリマインダーを実装するにはどうすればよいですか?カレンダー機能とイベント リマインダーは、Web アプリケーションを開発する際の一般的な要件の 1 つです。個人のスケジュール管理、チームの共同作業、オンライン イベントのスケジュール管理など、カレンダー機能は便利な時間管理とトランザクションの手配を提供します。 PHP プロジェクトでのカレンダー機能とイベント リマインダーの実装は、次の手順で完了します。データベースの設計 まず、カレンダー イベントに関する情報を保存するデータベース テーブルを設計する必要があります。単純なデザインには次のフィールドを含めることができます: id: イベントに固有

システム ログに対するユーザーの変更を制限するように CentOS システムをセットアップする方法 システム ログに対するユーザーの変更を制限するように CentOS システムをセットアップする方法 Jul 05, 2023 pm 03:43 PM

ユーザーによるシステム ログの変更を制限するために CentOS システムを設定する方法 CentOS システムでは、システム ログは非常に重要な情報源であり、システムの動作状況、エラー メッセージ、警告などが記録されます。システムの安定性とセキュリティを保護するために、ユーザーによるシステム ログの変更を制限する必要があります。この記事では、CentOSシステムでシステムログの変更権限を制限する設定方法を紹介します。 1. ユーザー グループとユーザーを作成する まず、システム ログの管理を特に担当するユーザー グループと、システム ログを管理するためのユーザー グループを作成する必要があります。

WPS メンバーがアップロードできるドキュメントの最大サイズが制限を超えている場合はどうすればよいですか? WPS メンバーがアップロードできるドキュメントの最大サイズが制限を超えている場合はどうすればよいですか? Mar 20, 2024 pm 06:40 PM

WPSは総合的な業務を統合するオフィスソフトで、現在はダウンロードして利用することができますが、より多くの機能を利用したい場合は会員登録が必要です。 WPS メンバーがアップロードできるファイルの最大サイズはどのくらいなのか疑問に思う人もいるかもしれません。 WPS会員ユーザーの場合、1回あたり最大1Gまでファイルをアップロードでき、すべてのファイルを合計すると最大365Gまで可能です端末によって多少の違いはあるかもしれませんが、全体的な表示は基本的に同様です。制限を超えてアップロードできない場合はどうすればよいですか?次に説明していきます。 1. クラウド文書などのファイルをアップロードする場合、一定の容量があり、それを超えるとアップロードできません。 2. メンバーシップのロゴをクリックし、必要に応じてメンバーシップを購入し、スペースを展開します。 3. クーポンが時々登場するので忘れずに利用しましょう。

JavaScript を使用して画像をコンテナ内に制限しながらドラッグしたりズームしたりするにはどうすればよいですか? JavaScript を使用して画像をコンテナ内に制限しながらドラッグしたりズームしたりするにはどうすればよいですか? Oct 20, 2023 pm 04:19 PM

JavaScript はコンテナ内に限定しながら画像のドラッグとズームをどのように実装するのでしょうか? Web 開発では、画像をドラッグしてズームする必要がよくあります。この記事では、JavaScriptを使用して画像のドラッグやズーム、コンテナ内での操作を制限する方法を紹介します。 1. 画像をドラッグする 画像をドラッグするには、マウス イベントを使用してマウスの位置を追跡し、それに応じて画像の位置を移動します。以下はサンプルコードです: //ピクチャ要素 varimage を取得します。

See all articles