


Lösung für Mouseout- und Mouseover-Ereignisse, die ausgelöst werden, wenn die Maus über die Fähigkeiten eines untergeordneten Elements fährt
Was ich erreichen möchte: Wenn die Maus in die Blackbox eintritt, führt die orange Box eine Einblendanimation aus, wenn sich der Blackbox-Bereich bewegt (selbst wenn sie die rosa Box passiert, wird die Animation immer noch nicht ausgelöst); Wenn die Maus herausbewegt wird, verschwindet das orangefarbene Kästchen.
Erklärung des aufgetretenen Problems: Wenn sich die Maus in das schwarze Feld bewegt, führt das orangefarbene Feld eine Einblendanimation aus. Wenn die Maus jedoch vom schwarzen Feld zum rosafarbenen Feld wechselt, verschwindet das orangefarbene Feld und dann das Die Einblendanimation wird erneut ausgeführt. Wenn sich die Maus aus der rosa Box in die schwarze Box bewegt, wird die Einblendanimation der orangen Box erneut ausgeführt. Das ist nicht das, was ich will.
Anfangscode:
<!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <meta charset="utf-8"> <title>mouseover mouseout</title> <style type="text/css" media="screen"> .parent{ width:200px; height:200px; background:black; } .child{ width:100px; height:100px; background:pink; } .a1{ width:40px; height:40px; background:orange; display:none; } </style> </head> <body> <div class="parent"> <div class="child"></div> <div class="a1"></div> </div> <script> $('.parent').on('mouseover',function(e){ $('.a1').show(1000); }); $('.parent').on('mouseout',function(e){ $('.a1').css('display','none'); }); </script> </body> </html>
Zuerst erklären wir die Gründe, warum diese Probleme auftreten.
Wenn sich die Maus von der Blackbox zur Pinkbox bewegt, wird das Mouseover der Blackbox ausgelöst, und aufgrund des Ereignissprudelns wird sofort das Mouseover-Ereignis der Blackbox, also tatsächlich der Orangebox, ausgelöst verschwindet zuerst und führt dann sofort die Einblendanimation aus. Dies ist der Prozess, den wir sehen.
Wenn sich die Maus von der rosa Box zur schwarzen Box bewegt, wird das Mouseover-Ereignis aus der Blackbox erneut ausgelöst (denn unabhängig davon, ob die Maus über das ausgewählte Element oder seine Unterelemente geht, wird das Mouseover-Ereignis ausgelöst). und gleichzeitig wird auch das Mouseover ausgelöst. Es erfolgt also erneut der Vorgang des Einblendens.
Methode 1: Verwenden Sie Mouseleave/Mouseout anstelle von Mouseover/Mouseout [Beste Methode]
Sehen wir uns zunächst den Unterschied in der Verwendung zwischen Mouseout&Mouseover und Mouseleave&Mouseenter an
Mouseover und MouseEnter
Das Mouseover-Ereignis wird immer dann ausgelöst, wenn der Mauszeiger über das ausgewählte Element oder seine Unterelemente verläuft.
Das Mouseenter-Ereignis wird nur ausgelöst, wenn der Mauszeiger von außerhalb des Elements in das ausgewählte Element (in das Element) gelangt.
Mouseout und Mouseleave
Das Mouseout-Ereignis wird unabhängig davon ausgelöst, ob der Mauszeiger das ausgewählte Element oder ein untergeordnetes Element verlässt.
Das Mouseleave-Ereignis wird nur ausgelöst, wenn der Mauszeiger das ausgewählte Element verlässt (außerhalb des Elements).
Sie können sich ein einfaches Beispiel ansehen, um den Unterschied zwischen den beiden zu erkennen
So kann der verbesserte Code
sein<!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <meta charset="utf-8"> <title>mouseover mouseout</title> <style type="text/css" media="screen"> .parent{ width:200px; height:200px; background:black; } .child{ width:100px; height:100px; background:pink; } .a1{ width:40px; height:40px; background:orange; display:none; } </style> </head> <body> <div class="parent"> <div class="child"></div> <div class="a1"></div> </div> <script> $('.parent').on('mouseenter',function(e){ $('.a1').show(1000); }); $('.parent').on('mouseleave',function(e){ $('.a1').css('display','none'); }); </script> </body> </html>
Methode 2: Verwenden Sie e.stopPropagation(), um eine weitere Ausbreitung des Ereignisses zu verhindern
e.stopPropagation() stoppt die weitere Ausbreitung von Ereignissen in den Erfassungs-, Zielverarbeitungs- oder Bubbling-Phasen des Ausbreitungsprozesses. Nach dem Aufruf dieser Methode wird der Handler für das Ereignis auf diesem Knoten aufgerufen und das Ereignis wird nicht mehr an andere Knoten gesendet.
<!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <meta charset="utf-8"> <title>mouseover mouseout</title> <style type="text/css" media="screen"> .parent{ width:200px; height:200px; background:black; } .child{ width:100px; height:100px; background:pink; } .a1{ width:40px; height:40px; background:orange; display:none; } </style> </head> <body> <div class="parent"> <div class="child"></div> <div class="a1"></div> </div> <script> $('.parent').on('mouseover',function(e){ $('.a1').show(1000); }); $('.parent').on('mouseout',function(e){ $('.a1').css('display','none'); }); $('.child').on('mouseover',function(e){ e.stopPropagation(); $('.a1').css('display','block'); //这是保证动画体的末状态不变 }); $('.child').on('mouseout',function(e){ e.stopPropagation(); //防止从粉色框移出到黑色框时再次触发其他事件 }) </script> </body> </html>
Erweitern Sie Ihr Denken:
1. Was tun, wenn es zu viele untergeordnete Elemente gibt? Muss jedes einzelne an e.stopPropagation() gebunden werden?
Verwenden Sie einen JQuery-Selektor .children(), z. B. $('.parent').children(). Ruft die untergeordneten Elemente jedes Elements im Satz übereinstimmender Elemente ab.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Matter.js ist eine in JavaScript geschriebene 2D -Motorhilfe -Physik -Engine. Diese Bibliothek kann Ihnen helfen, die 2D -Physik in Ihrem Browser problemlos zu simulieren. Es bietet viele Merkmale, wie die Möglichkeit, starre Körper zu erstellen und physikalische Eigenschaften wie Masse, Fläche oder Dichte zuzuweisen. Sie können auch verschiedene Arten von Kollisionen und Kräften simulieren, wie z. B. die Schwerkraft Reibung. Matter.js unterstützt alle Mainstream -Browser. Darüber hinaus ist es für mobile Geräte geeignet, da es Berührungen erkennt und reagiert. Alle diese Funktionen machen es Ihre Zeit wert, zu lernen, wie man die Engine benutzt. In diesem Tutorial werde ich die Grundlagen dieser Bibliothek, einschließlich ihrer Installation und Nutzung, behandeln und a bereitstellen

Dieser Artikel zeigt, wie Sie den Inhalt eines DIV automatisch alle 5 Sekunden mit JQuery und Ajax aktualisieren können. Das Beispiel holt und zeigt die neuesten Blog -Beiträge aus einem RSS -Feed zusammen mit dem letzten Aktualisierungstempel. Ein Ladebild ist Optiona
