この記事は、親要素 a タグの href のデフォルト動作と、子要素にバインドされたクリック イベントへの応答との間の影響について説明しています。必要な場合は、それを参照してください。それがあなたを助けることを願っています。
開発プロセス中に問題が発生しました。実行環境はChrome 68です
この問題について説明します。 a タグ内にネストがある場合、親要素である a タグと子要素にバインドされた click イベント 応答に影響があります。ページ構造:
nbsp;html> <meta> <meta> <meta> <title>a标签内部点击事件失效</title> <style> * { margin: 0; padding: 0; } .father { display: block; width: 500px; height: 200px; background-color: rgb(210, 111, 30); } .child-one { display: block; width: 200px; height: 50px; background-color: rgb(174, 43, 226); } .child-two { display: block; width: 200px; height: 50px; background-color: rgb(43, 226, 67); } .child-three { display: block; width: 200px; height: 50px; background-color: rgb(43, 137, 226); } </style> <a>父标签 <span> 子标签1 </span> <object> <a> 子标签2 </a> </object> <object> <a> 子标签3 </a> </object> </a> <script> let father = document.querySelector('.father'); let ele1 = document.querySelector('.child-one'); let ele2 = document.querySelector('.child-two'); let ele3 = document.querySelector('.child-three'); ele1.addEventListener('click', function (e) { e.stopPropagation(); // e.preventDefault(); alert('click child-one') window.location.href = 'child-one' }, false) ele2.addEventListener('click', function (e) { e.stopPropagation(); alert('click child-two') // window.location.href='child-two' }, false) ele3.addEventListener('click', function (e) { alert('click child-three') window.location.href = 'child-three' }, false) father.addEventListener('click', function (e) { alert('click father') window.location.href = 'father' }, false) </script>
例は以下のとおりです(aタグがネストされているとブラウザが正しく解析しないため、objectタグで囲っています)。
次の操作を実行します:
親タグをクリックすると、最初に111がポップアップ表示され、その後親タグのhrefリンクにジャンプします。
href- より前にonclickが実行される説明
preventDefault
之后,执行了子元素自己的跳转。 当点击child-two时,弹出响应信息,然后会跳转href的链接。
当点击child-three时,先弹出
click child-three
,然后是href child-three
,说明click事件先于href执行。
上面4个操作除了2之外都很好理解,2中,为什么已经在阻止了事件冒泡之后,仍然执行了父元素中href
的跳转。
思考:
首先可以肯定的是,事件冒泡确实被阻止了,因为父元素的onclick并没有执行。
所以猜测,标签的默认行为是无法通过取消冒泡来阻止的,就算事件没有冒泡到父元素,子元素在父元素<a></a>
标签内部,仍然会执行<a></a>
标签默认行为。
解决方法:
在子元素中添加e.preventDefault()
阻止默认行为
父元素不使用<a></a>
标签,使用其他标签绑定click事件且子元素阻止冒泡
父元素不使用href
属性,直接在<a></a>
バブリングを防止した後も、実行結果は期待どおりではありません。 preventDefault
を追加すると、子要素自体のジャンプが実行されます。
child-two をクリックすると、応答メッセージがポップアップ表示され、href リンクにジャンプします。
child-three をクリックすると、最初に click child-three
がポップアップし、次に href child-three
がポップアップ表示され、クリック イベントが href の前に実行されることを示します。
href
のジャンプが実行されるのはなぜですか? 🎜🎜考え: 🎜🎜 まず第一に、親要素の onclick が実行されないため、イベントのバブリングが実際にブロックされていることは確かです。 🎜つまり、 タグのデフォルトの動作は、イベントが親要素までバブルアップしない場合でも、親要素 <a> 内にあるので防ぐことはできないと思います。 </a>
タグ。<a></a>
タグのデフォルトの動作は引き続き実行されます。 🎜🎜解決策: 🎜🎜デフォルトの動作を防ぐために子要素に e.preventDefault()
を追加します 🎜🎜親要素は <a></a>
タグを使用しません。他のタグを使用してバインドします。クリック イベントを設定し、子要素のバブリングを防ぎます🎜🎜親要素は href
属性を使用せず、クリック イベントを <a> tag🎜🎜おすすめ関連記事: 🎜🎜🎜リンクタグリンクCSSと@import読み込みの違いは何ですか? 🎜🎜🎜🎜HTMLタグ:imgタグの使い方まとめ🎜🎜🎜🎜</a>
以上が親要素の タグのデフォルトの動作とクリック イベント間の相互作用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



