Inhaltsverzeichnis
×" >×
×" >×
×" >×
×" >×
Heim Web-Frontend js-Tutorial JavaScript 事件冒泡应用实例分析_javascript技巧

JavaScript 事件冒泡应用实例分析_javascript技巧

May 16, 2016 pm 06:36 PM
javascript 事件冒泡

然而,在今天一些大型的WEB交互项目中,比如大型的WebGame项目,JavaScript事件冒泡影响是值得重视的。本文通过一个简单的例子来讲解JavaScript事件冒泡及使用注意事项。

如果你对JavaScript事件冒泡还没有什么印象,不妨先看看我之前写的一篇博客《JavaScript事件冒泡简介及应用》。本文讲究实用,不在对JavaScript事件冒泡基础知识进行过多的阐述。

在文章开始之前,现在先看看下面这样一个需求:下面HTML假设描述的是一个WebGame项目包裹栏(玩过网游的人应该知道什么是包裹栏或物品栏)的外框架,拖动这个包裹标题栏可以拖动这个包裹到页面上任何位置,而点击标题栏右侧的“×”关闭按钮可以关闭这个包裹栏的显示。你通过观察HTML结构,可以发现那个关闭按钮其实是一个A链接,而且是作为标题栏H5的子元素存在。要想拖动一个元素,我们会想到向拖动的句柄元素注册mousedown事件,而点击或“单击”关闭按钮就关闭这个包裹。根据这个需求,我们很快得到下面这样的代码。


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

在上面的例子中,你发现点击关闭按钮的时候,标题栏的mousedown事件也触发了,显然这是在你意料之中的,因为你知道这正是JavaScript事件冒泡在起作用。其实你真正要的效果是点关闭按钮的时候,不要执行标题H5注册的mousedown事件,于是你想到了阻止事件冒泡,接着代码修改成下面这样:
复制代码 代码如下:


×





结果你发现单击关闭按钮的时候,标题H5注册的mousedown事件还是执行了,这是怎么回事呢?其实细心的你可能发现,H5标题和A链接注册的事件不是一样的,在上面的代码中,我们在A链接注册的click事件中调用阻止事件方法,这只是意味着其父元素注册的“同类事件”不会执行,意思是说如果H5标题也注册了click事件,这个click事件不会执行,而这里的mousedown就继续执行了。这里的mousedown执行不是因为你点中标题栏而发生的,是由于你在单击click的时候伴随产生mousedown事件,然后又由于JavaScript事件冒泡机制的存在,事件向父级广播并被H5标题mousedown注册方法捕获。关于对这点的理解,可以参考我另外一篇博客《当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element》。现在,通过分析,你应该知道怎么做了,小改上面的代码,只要把A链接的click事件改成与H5标题一样的mousedown事件,你想要的效果就实现了。
相关话题:
现在讲讲如何在使用jQuery开发时轻松阻止事件冒泡。jQuery作为一个优秀的脚本框架,对事件的封装及浏览器兼容处理自然也是很出众的。想了解更多也可阅读我的另外一篇博客《利用jQuery的$.event.fix函数统一浏览器event处理》。
使用jQuery要想阻止事件冒泡方法有二:
1、利用jQuery做过兼容处理的event对象,直接使用event.preventDefault(),举例代码如下:
复制代码 代码如下:



×





2、在jQuery绑定的函数中返回false,即return false。注意:不是使用jQuery绑定的方法返回false是没有用的。代码如下:
复制代码 代码如下:



×





最后还要说明一下,利用第二个方法阻止事件冒泡,同时也阻止了浏览器的默认行为,在jQuery事件处理的源代码的handle方法中(jQuery JavaScript Library v1.3.2非压缩代码2700行)我们可以看到向下面这样的处理,event.preventDefault()用于阻止浏览器默认行为。
复制代码 代码如下:

handle : function(event)
{
//other code......
if (ret === false)
{
event.preventDefault();
event.stopPropagation();
}
//other code......
}

作者:WebFlash
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verstehen Sie den Event-Bubbling-Mechanismus: Warum wirkt sich ein Klick auf ein untergeordnetes Element auf das Ereignis des übergeordneten Elements aus? Verstehen Sie den Event-Bubbling-Mechanismus: Warum wirkt sich ein Klick auf ein untergeordnetes Element auf das Ereignis des übergeordneten Elements aus? Jan 13, 2024 pm 02:55 PM

Ereignis-Bubbling verstehen: Warum löst ein Klick auf ein untergeordnetes Element ein Ereignis auf dem übergeordneten Element aus? Ereignis-Bubbling bedeutet, dass in einer verschachtelten Elementstruktur, wenn ein untergeordnetes Element ein Ereignis auslöst, das Ereignis wie beim Bubbling Schicht für Schicht an das übergeordnete Element weitergegeben wird, bis zum äußersten übergeordneten Element. Mit diesem Mechanismus können Ereignisse an untergeordneten Elementen im gesamten Elementbaum verbreitet werden und nacheinander alle zugehörigen Elemente auslösen. Um das Bubbling von Ereignissen besser zu verstehen, schauen wir uns einen bestimmten Beispielcode an. HTML-Code: <divid="parent&q

Warum wird das Event-Bubbling zweimal ausgelöst? Warum wird das Event-Bubbling zweimal ausgelöst? Feb 22, 2024 am 09:06 AM

Warum wird das Event-Bubbling zweimal ausgelöst? Ereignisblasen (Event Bubbling) bedeutet, dass im DOM, wenn ein Element ein Ereignis auslöst (z. B. ein Klickereignis), das Ereignis vom Element zum übergeordneten Element übergeht, bis es zum Dokumentobjekt der obersten Ebene übergeht. Das Ereignis-Bubbling ist Teil des DOM-Ereignismodells, das es Entwicklern ermöglicht, Ereignis-Listener an übergeordnete Elemente zu binden, sodass, wenn untergeordnete Elemente Ereignisse auslösen, diese Ereignisse erfasst und über den Bubbling-Mechanismus verarbeitet werden können. Manchmal stoßen Entwickler jedoch auf Ereignisse, die zweimal auftreten und ausgelöst werden.

Warum kann das Klickereignis in js nicht wiederholt ausgeführt werden? Warum kann das Klickereignis in js nicht wiederholt ausgeführt werden? May 07, 2024 pm 06:36 PM

Klickereignisse in JavaScript können aufgrund des Event-Bubbling-Mechanismus nicht wiederholt ausgeführt werden. Um dieses Problem zu lösen, können Sie die folgenden Maßnahmen ergreifen: Verwenden Sie die Ereigniserfassung: Geben Sie einen Ereignis-Listener an, der ausgelöst wird, bevor das Ereignis in die Luft sprudelt. Übergabe von Ereignissen: Verwenden Sie event.stopPropagation(), um das Sprudeln von Ereignissen zu stoppen. Verwenden Sie einen Timer: Lösen Sie den Ereignis-Listener nach einiger Zeit erneut aus.

Gründe und Lösungen für den Fehler von jQuery .val() Gründe und Lösungen für den Fehler von jQuery .val() Feb 20, 2024 am 09:06 AM

Titel: Gründe und Lösungen für das Scheitern von jQuery.val() In der Front-End-Entwicklung wird jQuery häufig zum Betreiben von DOM-Elementen verwendet. Die Methode .val() wird häufig zum Abrufen und Festlegen des Werts von Formularelementen verwendet. Manchmal stoßen wir jedoch auf Situationen, in denen die Methode .val() fehlschlägt, was dazu führt, dass der Wert des Formularelements nicht korrekt abgerufen oder festgelegt werden kann. In diesem Artikel werden die Ursachen des .val()-Fehlers untersucht, entsprechende Lösungen bereitgestellt und spezifische Codebeispiele angehängt. 1.Ursachenanalyse.val() Methode

Für welche Szenarien können Ereignismodifikatoren in Vue verwendet werden? Für welche Szenarien können Ereignismodifikatoren in Vue verwendet werden? May 09, 2024 pm 02:33 PM

Vue.js-Ereignismodifikatoren werden verwendet, um bestimmte Verhaltensweisen hinzuzufügen, darunter: Verhindern von Standardverhalten (.prevent), Stoppen von Ereignisblasen (.stop), Einmaliges Ereignis (.once), Erfassen von Ereignissen (.capture), Passives Abhören von Ereignissen (.passive), Adaptiv Modifikator (.self)Schlüsselmodifikator (.key)

Welche JS-Events sprudeln nicht? Welche JS-Events sprudeln nicht? Feb 19, 2024 pm 09:56 PM

Welche Situationen gibt es bei JS-Ereignissen, in denen keine Blasen entstehen? Ereignisblasen (Event Bubbling) bedeutet, dass nach dem Auslösen eines Ereignisses eines Elements das Ereignis vom innersten Element zum äußersten Element nach oben übertragen wird. Diese Übertragungsmethode wird als Ereignisblasen bezeichnet. Allerdings können nicht alle Ereignisse sprudeln. Es gibt einige Sonderfälle, in denen dies nicht der Fall ist. In diesem Artikel werden die Situationen in JavaScript vorgestellt, in denen keine Ereignisse auftreten. 1. Verwenden Sie stopPropagati

Warum wird der Event-Bubbling-Mechanismus zweimal ausgelöst? Warum wird der Event-Bubbling-Mechanismus zweimal ausgelöst? Feb 25, 2024 am 09:24 AM

Warum kommt es zweimal hintereinander zum Event-Bubbling? Das Bubbling von Ereignissen ist ein wichtiges Konzept in der Webentwicklung. Es bedeutet, dass, wenn ein Ereignis in einem verschachtelten HTML-Element ausgelöst wird, das Ereignis vom innersten Element zum äußersten Element übergeht. Dieser Vorgang kann manchmal zu Verwirrung führen. Ein häufiges Problem besteht darin, dass die Ereignisblase zweimal hintereinander auftritt. Um besser zu verstehen, warum Event-Bubbling zweimal hintereinander auftritt, schauen wir uns zunächst ein Codebeispiel an:

Was ist Event-Bubbling? Eingehende Analyse des Ereignis-Bubbling-Mechanismus Was ist Event-Bubbling? Eingehende Analyse des Ereignis-Bubbling-Mechanismus Feb 20, 2024 pm 05:27 PM

Was ist Event-Bubbling? Eingehende Analyse des Event-Bubbling-Mechanismus Event-Bubbling ist ein wichtiges Konzept in der Webentwicklung, das die Art und Weise definiert, wie Ereignisse auf der Seite bereitgestellt werden. Wenn ein Ereignis für ein Element ausgelöst wird, wird das Ereignis ausgehend vom innersten Element übertragen und nach außen weitergeleitet, bis es zum äußersten Element weitergeleitet wird. Diese Abgabemethode ähnelt dem Sprudeln von Blasen im Wasser und wird daher als Event-Sprudeln bezeichnet. In diesem Artikel werden wir den Event-Bubbling-Mechanismus eingehend analysieren. Das Prinzip des Event-Bubbling lässt sich anhand eines einfachen Beispiels verstehen. Angenommen, wir haben ein H

See all articles