


Penyelesaian kepada peristiwa tetikus dan alih tetikus dicetuskan apabila tetikus melepasi kemahiran elemen_javascript kanak-kanak
Apa yang saya ingin capai: Apabila tetikus memasuki kotak hitam, kotak oren melakukan animasi fade-in apabila julat kotak hitam bergerak (walaupun ia melepasi kotak merah jambu, animasi masih tidak dicetuskan); apabila tetikus bergerak keluar, kotak oren hilang.
Penjelasan masalah yang dihadapi: Apabila tetikus bergerak ke dalam kotak hitam, kotak oren melakukan animasi pudar masuk, tetapi apabila tetikus melepasi kotak hitam ke kotak merah jambu, kotak oren hilang, dan kemudian animasi fade-in dilakukan semula. Apabila tetikus bergerak keluar dari kotak merah jambu ke kotak hitam, animasi fade-in kotak oren dilaksanakan semula. Ini bukan yang saya mahu.
Kod awal:
<!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>
Mula-mula kami terangkan sebab-sebab mengapa masalah ini berlaku.
Apabila tetikus bergerak dari kotak hitam ke kotak merah jambu, tetikus keluar kotak hitam dicetuskan, dan disebabkan peristiwa menggelegak, peristiwa alih tetikus kotak hitam dicetuskan serta-merta, jadi sebenarnya, kotak oren hilang dahulu, dan kemudian Lakukan animasi fade-in dengan segera. Ini adalah proses yang kita lihat.
Apabila tetikus bergerak dari kotak merah jambu ke kotak hitam, tetikus keluar dari kotak hitam dicetuskan semula (kerana tidak kira sama ada tetikus melalui elemen yang dipilih atau sub-elemennya, peristiwa alih tetikus akan dicetuskan), dan tetikus juga dicetuskan pada masa yang sama Jadi terdapat proses melaksanakan kesan pudar masuk semula.
Kaedah 1: Gunakan mouseleave/mouseout bukannya mouseover/mouseout [Kaedah terbaik]
Mari kita lihat dahulu perbezaan penggunaan antara mouseout&mouseover dan mouseleave&mouseenter
tetikus dan tetikus masuk
Acara alih tetikus akan dicetuskan apabila penuding tetikus melepasi elemen yang dipilih atau sub-elemennya.
Acara tetikus hanya akan dicetuskan apabila penunjuk tetikus melepasi dari luar elemen ke dalam elemen yang dipilih (ke dalam elemen).
tetikus keluar dan tetikus pergi
Acara keluar tetikus akan dicetuskan sama ada penuding tetikus meninggalkan elemen yang dipilih atau mana-mana elemen anak.
Peristiwa mouseleave hanya dicetuskan apabila penunjuk tetikus melepasi elemen yang dipilih (di luar elemen).
Anda boleh melihat contoh mudah untuk melihat perbezaan antara keduanya
Jadi kod yang dipertingkatkan boleh menjadi
<!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>
Kaedah 2: Gunakan e.stopPropagation() untuk mengelakkan acara daripada terus merebak
e.stopPropagation() akan menghentikan penyebaran selanjutnya peristiwa dalam peringkat tangkapan, pemprosesan sasaran atau menggelegak proses penyebaran. Selepas memanggil kaedah ini, pengendali untuk acara pada nod ini akan dipanggil dan acara tidak lagi akan dihantar ke nod lain.
<!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>
Kembangkan pemikiran anda:
1. Apa yang perlu dilakukan jika terdapat terlalu banyak elemen kanak-kanak? Adakah setiap satu perlu terikat dengan e.stopPropagation()?
Gunakan pemilih jquery .children(), seperti $('.parent').children(). Mendapatkan elemen anak bagi setiap elemen dalam set elemen dipadankan.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

10 Plugin Permainan JQuery yang menyeronokkan untuk menjadikan laman web anda lebih menarik dan meningkatkan keletihan pengguna! Walaupun Flash masih merupakan perisian terbaik untuk membangunkan permainan web kasual, jQuery juga boleh menghasilkan kesan yang mengejutkan, dan walaupun tidak setanding dengan permainan flash aksi tulen, dalam beberapa kes, anda juga boleh bersenang -senang di penyemak imbas anda. permainan jquery tic toe "Hello World" pengaturcaraan permainan kini mempunyai versi jQuery. Kod sumber JQuery Game Composition Crazy Word Ini adalah permainan mengisi kosong, dan ia dapat menghasilkan beberapa hasil yang pelik kerana tidak mengetahui konteks perkataan. Kod sumber JQuery Mine Sweeping Game

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Tutorial ini menunjukkan cara membuat kesan latar belakang paralaks yang menawan menggunakan jQuery. Kami akan membina sepanduk header dengan imej berlapis yang mewujudkan kedalaman visual yang menakjubkan. Plugin yang dikemas kini berfungsi dengan JQuery 1.6.4 dan kemudian. Muat turun

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Matter.js adalah enjin fizik badan tegar 2D yang ditulis dalam JavaScript. Perpustakaan ini dapat membantu anda dengan mudah mensimulasikan fizik 2D dalam penyemak imbas anda. Ia menyediakan banyak ciri, seperti keupayaan untuk mencipta badan yang tegar dan menetapkan sifat fizikal seperti jisim, kawasan, atau ketumpatan. Anda juga boleh mensimulasikan pelbagai jenis perlanggaran dan daya, seperti geseran graviti. Matter.js menyokong semua pelayar arus perdana. Di samping itu, ia sesuai untuk peranti mudah alih kerana ia mengesan sentuhan dan responsif. Semua ciri-ciri ini menjadikannya bernilai masa untuk belajar menggunakan enjin, kerana ini memudahkan untuk membuat permainan atau simulasi 2D berasaskan fizik. Dalam tutorial ini, saya akan merangkumi asas -asas perpustakaan ini, termasuk pemasangan dan penggunaannya, dan menyediakan

Artikel ini menunjukkan bagaimana untuk menyegarkan semula kandungan div secara automatik setiap 5 saat menggunakan jQuery dan Ajax. Contohnya mengambil dan memaparkan catatan blog terkini dari suapan RSS, bersama -sama dengan timestamp refresh terakhir. Imej pemuatan adalah opsyena
