Heim Web-Frontend js-Tutorial Js冒泡事件详解及阻止示例_javascript技巧

Js冒泡事件详解及阻止示例_javascript技巧

May 16, 2016 pm 04:54 PM
sprudelndes Ereignis 阻止

Js冒泡机制是指如果某元素定义了事件A,如click事件,如果触发了事件之后,没有阻止冒泡事件,那么事件将向父级元素传播,触发父类的click函数。
如下例所示:

复制代码 代码如下:



<script> <BR>function ialertdouble(e) { <BR>alert('innerdouble'); <BR>stopBubble(e); <BR>} <br><br>function ialertthree(e) { <BR>alert('innerthree'); <BR>stopBubbleDouble(e); <BR>} <br><br>function stopBubble(e) { <BR>var evt = e||window.event; <BR>evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡 <BR>} <br><br>function stopBubbleDouble(e) { <BR>var evt = e||window.event; <BR>evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡 <BR>evt.preventDefault();//阻止浏览器默认行为,这样链接就不会跳转 <BR>} <br><br>$(function() { <BR>//方法一 <BR>//$('#jquerytest').click(function(event) { <BR>// alert('innerfour'); <BR>// event.stopPropagation(); <BR>// event.preventDefault(); <BR>//}); <br><br>//方法二 <BR>$('#jquerytest').click(function() { <BR>alert('innerfour'); <BR>return false; <BR>}); <BR>}); <BR></script>
without
middle
inner

innerdouble

innerthree


innerfour






当你点击inner的时候,会依次弹出‘inner',‘middle'和‘without'。这就是事件冒泡。

从直观上来看,也是这样的,因为最里层的区域是在父级节点中的,点击了子级节点的区域,其实也是点击了父级节点的区域,所以事件会传播起来。

其实,很多的时候,我们并不想事件冒泡,因为这样会同时触发几个事件。

接下来:我们点击innerdouble。就会发现她并没有冒泡,因为她在调用的方法ialertdouble()中调用了stopBubble()方法,方法通过判断浏览器类型(Ie通过cancleBubble() 、firefox通过stopProgation())来阻止冒泡。

但如果是链接的话,我们会发现她也会阻止冒泡,但是会跳转,这就是浏览器的默认行为。需要借助preventDefault()方法来阻止。具体可以查看ialertthree()。

目前主流的都是借助jquery来绑定click事件的,这样的话,就简单多了。

我们可以在点击事件时传入参数event,然后直接

event.stopPropagation();
event.preventDefault(); //没有链接不需要加这个。

这样就可以了。

框架就是好,其实还有更简单的,在事件处理程序中返回false,这是对在事件对象上同时调用stopPropagation()和preventDefault()的一种简写方式。
【详细代码见上面,记得载入jquery.js。】

其实也还可以在每个click事件中加入判断:
复制代码 代码如下:

$('#id').click(function(event){
if(event.target==this){
//do something
}
})

解析:事件处理程序中的变量event保存着事件对象。而event.target属性保存着发生事件的目标元素。这个属性是DOM API中规定的,但是没有被所有浏览器实现 。jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性。通过.target,可以确定DOM中首先接收到事件的元素(即实际被单击的元素)。而且,我们知道this引用的是处理事件的DOM元素,所以可以编写以上代码。

不过推荐使用return false,Jquery绑定事件的话。
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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 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)

So blockieren Sie den Zugriff auf Websites in Edge So blockieren Sie den Zugriff auf Websites in Edge Jul 12, 2023 am 08:17 AM

Manchmal möchten wir aus vielen Gründen bestimmte Websites auf Microsoft Edge blockieren, sei es aus Gründen der Kindersicherung, Zeitverwaltung, Inhaltsfilterung oder sogar aus Sicherheitsgründen. Eine häufige Motivation besteht darin, produktiver zu sein und konzentriert zu bleiben. Durch das Blockieren ablenkender Websites können Menschen eine angenehme Arbeits- oder Lernumgebung schaffen und mögliche Ablenkungen minimieren. Schließlich ist die Inhaltsfilterung wichtig für die Aufrechterhaltung einer sicheren und respektvollen Online-Umgebung. Das Blockieren von Websites, die explizite, beleidigende oder anstößige Inhalte enthalten, ist besonders wichtig in Bildungs- oder Berufsumgebungen, in denen die Wahrung angemessener Standards und Werte von entscheidender Bedeutung ist. Wenn Sie diese Situation nachvollziehen können, ist dieser Artikel genau das Richtige für Sie. So blockieren Sie den Zugriff auf das Internet in Edge

Wie kann man Speicherlecks in Abschlüssen effektiv vermeiden? Wie kann man Speicherlecks in Abschlüssen effektiv vermeiden? Jan 13, 2024 pm 12:46 PM

Wie kann man Speicherlecks in Schließungen verhindern? Der Verschluss ist eine der leistungsstärksten Funktionen in JavaScript, die die Verschachtelung von Funktionen und die Kapselung von Daten ermöglicht. Schließungen sind jedoch auch anfällig für Speicherverluste, insbesondere bei asynchronen und Timer-Operationen. In diesem Artikel wird erläutert, wie Speicherlecks bei Abschlüssen verhindert werden, und es werden spezifische Codebeispiele bereitgestellt. Speicherlecks treten normalerweise auf, wenn ein Objekt nicht mehr benötigt wird, der von ihm belegte Speicher jedoch aus irgendeinem Grund nicht freigegeben werden kann. In einem Abschluss, wenn eine Funktion auf externe Variablen und diese Variablen verweist

So blockieren Sie Textnachrichten auf dem iPhone So blockieren Sie Textnachrichten auf dem iPhone Jul 31, 2023 pm 09:49 PM

Wie blockiere ich Textnachrichten von jemandem auf dem iPhone? Wenn Sie eine Textnachricht von jemandem erhalten, den Sie blockieren möchten, müssen Sie die Nachricht auf Ihrem iPhone öffnen. Sobald Sie die Nachricht geöffnet haben, klicken Sie oben auf das Symbol mit der Telefonnummer oder dem Namen des Absenders darunter. Klicken Sie nun auf der rechten Seite des Bildschirms auf Nachrichten. Nun wird ein weiterer Bildschirm mit der Option angezeigt, diesen Anrufer zu blockieren. Klicken Sie auf diese Schaltfläche und wählen Sie Kontakt blockieren. Die Telefonnummer kann Ihnen keine Textnachrichten mehr senden; außerdem wird der Anruf auf Ihrem iPhone gesperrt. Wie entsperre ich blockierte Kontakte auf dem iPhone? Wenn Sie einer blockierten Person erlauben möchten, Ihnen Nachrichten zu senden, können Sie die Blockierung jederzeit auf Ihrem iPhone aufheben. Um Kontakte auf dem iPhone zu entsperren, müssen Sie dies tun

Keine Unterstützung für Bubbling-Ereignisse: Einschränkungen und Umfang Keine Unterstützung für Bubbling-Ereignisse: Einschränkungen und Umfang Jan 13, 2024 pm 12:51 PM

Das Bubbling-Ereignis (BubblingEvent) bezieht sich auf eine Ereigniszustellungsmethode, die Schritt für Schritt von untergeordneten Elementen zu übergeordneten Elementen im DOM-Baum ausgelöst wird. In den meisten Fällen sind Bubbling-Ereignisse sehr flexibel und skalierbar, es gibt jedoch einige Sonderfälle, in denen Ereignisse das Bubbling nicht unterstützen. 1. Welche Ereignisse unterstützen das Sprudeln nicht? Obwohl die meisten Ereignisse das Blasen unterstützen, gibt es einige Ereignisse, die das Blasen nicht unterstützen. Im Folgenden sind einige häufige Ereignisse aufgeführt, die das Blasen nicht unterstützen: Fokus- und Unschärfeereignisse werden geladen und entladen

Welche Ereignisse können nicht in die Luft sprudeln? Welche Ereignisse können nicht in die Luft sprudeln? Nov 20, 2023 pm 03:00 PM

Die Ereignisse, die nicht sprudeln können, sind: 1. Fokusereignis; 3. Scrollereignis; 5. Mouseover- und Mouseout-Ereignis; ; 9. DOMContentLoaded-Ereignis; 10. Ausschneiden, Kopieren und Einfügen von Ereignissen usw.

Warum sprudeln Ereignisse nicht in die Luft? Warum sprudeln Ereignisse nicht in die Luft? Jan 13, 2024 am 08:50 AM

Warum kommt es in manchen Fällen nicht zu Ereignissen? Ereignis-Bubbling bedeutet, dass, wenn ein Ereignis für ein Element ausgelöst wird, sich das Ereignis ausgehend vom innersten Element nach oben ausbreitet, bis es an das äußerste Element weitergeleitet wird. In einigen Fällen kann das Ereignis jedoch nicht sprudeln, d. h. das Ereignis wird nur auf dem ausgelösten Element verarbeitet und nicht an andere Elemente weitergegeben. In diesem Artikel werden einige häufige Situationen vorgestellt, erläutert, warum Ereignisse nicht in die Blase gelangen, und spezifische Codebeispiele bereitgestellt. Verwenden Sie das Ereigniserfassungsmuster: Die Ereigniserfassung ist eine weitere Möglichkeit der Ereignisbereitstellung im Gegensatz zum Ereignis-Bubbling.

Beherrschen Sie den allgemeinen Event-Bubbling-Mechanismus in JavaScript Beherrschen Sie den allgemeinen Event-Bubbling-Mechanismus in JavaScript Feb 19, 2024 pm 04:43 PM

Häufige Bubbling-Ereignisse in JavaScript: Um die Bubbling-Eigenschaften allgemeiner Ereignisse zu beherrschen, sind spezifische Codebeispiele erforderlich. Einführung: In JavaScript bedeutet Event-Bubbling, dass das Ereignis vom Element mit der tiefsten Verschachtelungsebene zum äußeren Element weitergegeben wird, bis es weitergegeben wird Das äußerste übergeordnete Element. Das Verstehen und Beherrschen häufiger Bubbling-Ereignisse kann uns dabei helfen, die Benutzerinteraktion und die Ereignisbehandlung besser zu bewältigen. In diesem Artikel werden einige häufig auftretende Blasenereignisse vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern. 1. Klicken Sie auf Ereignis (klicken Sie auf

Was sind die gängigen Methoden, um Blasenbildungsereignisse zu verhindern? Was sind die gängigen Methoden, um Blasenbildungsereignisse zu verhindern? Feb 19, 2024 pm 10:25 PM

Welche Befehle werden häufig verwendet, um Blasenbildung zu verhindern? Bei der Webentwicklung stoßen wir oft auf Situationen, in denen wir mit Event-Bubbling umgehen müssen. Wenn ein Ereignis für ein Element ausgelöst wird, beispielsweise ein Klickereignis, löst auch das übergeordnete Element dasselbe Ereignis aus. Dieses Verhalten der Ereigniszustellung wird als Event-Bubbling bezeichnet. Manchmal möchten wir verhindern, dass ein Ereignis sprudelt, sodass das Ereignis nur auf dem aktuellen Element ausgelöst wird und verhindert wird, dass es an übergeordnete Elemente weitergeleitet wird. Um dies zu erreichen, können wir einige allgemeine Anweisungen verwenden, die Blasenereignisse verhindern. event.stopPropa

See all articles