Jadi setelah membaca pertanyaan yang baru dijawab saya tidak jelas apakah saya benar-benar memahami perbedaan antara mouseenter()
dan mouseover()
. Status pos
MouseOver ():
Akan menyala saat memasukkan elemen dan setiap kali gerakan mouse terjadi di dalam elemen.
MouseEnter ():
Akan menyala saat memasuki elemen.
Saya datang dengan biola yang menggunakan keduanya dan mereka tampaknya sangat mirip. Bisakah seseorang tolong jelaskan kepada saya perbedaan antara keduanya?
Saya juga mencoba membaca definisi JQuery, keduanya mengatakan hal yang sama.
Acara mouseover dikirim ke elemen ketika pointer mouse memasuki elemen
Acara mouseenter dikirim ke suatu elemen ketika pointer mouse memasuki elemen.
Bisakah seseorang tolong klarifikasi dengan sebuah contoh?
jquery
dom-events
aziz punjani
sumber
sumber
Jawaban:
Anda melihat perilaku ketika elemen target Anda berisi elemen anak:
http://jsfiddle.net/ZCWvJ/7/
Setiap kali mouse Anda memasuki atau meninggalkan elemen anak,
mouseover
dipicu, tetapi tidakmouseenter
.sumber
mouseleave
acara: jsfiddle.net/ZCWvJ/232 jsfiddle.net/ZCWvJ/233 Jika di mana sama dengan masukkan + pergi, maka penghitungan untuk lebih akan menjadi jumlah dari jumlah untuk masuk dan pergi.var n = + el.text();
bukanvar n = el.text();
? Saya hanya ingin tahu.+
operator untuk memaksa string dikembalikan dariel.text()
ke nomor. Apakah saya perlu melakukannya? Tidak. Dalam hal ini, pernyataan berikutnya yang menggunakann
juga akan memaksanya ke nomor. Jadi, mengapa saya menggunakannya? Saya tidak yakin ... ini 2 tahun yang lalu. Itu kebiasaan yang baik. Itu membuat niat saya eksplisit. Mungkin awalnya saya milikin + 1
sebelum saya simpan, tetapi memutuskan untuk mengecilkan kode saya dengan 2 karakter dan hanya menggunakan++n
. tidakn + 1
akan memaksa ke nomor, tetapi sebaliknya akan memaksa ke string yang menghasilkan output, misalnya .n
1
0111111
Ini adalah salah satu contoh terbaik yang saya temukan:
http://bl.ocks.org/mbostock/5247027
sumber
Meskipun mereka beroperasi dengan cara yang sama, bagaimanapun,
mouseenter
peristiwa hanya memicu ketika pointer mouse memasuki elemen yang dipilih . Themouseover
event dipicu jika pointer mouse memasuki setiap elemen anak juga .sumber
Lihat contoh kode dan demo di bagian bawah halaman dokumentasi jquery:
http://api.jquery.com/mouseenter/
sumber
The mouseenter acara berbeda dari mouseover dalam cara menangani acara menggelegak . Peristiwa mouseenter , hanya memicu penangannya ketika mouse memasuki elemen yang terikat padanya, bukan turunan . Rujuk: https://api.jquery.com/mouseenter/
The mouseleave acara berbeda dari mouseout dalam cara menangani acara menggelegak . Acara mouseleave , hanya memicu penangannya ketika mouse meninggalkan elemen yang terikat, bukan keturunan . Rujuk: https://api.jquery.com/mouseleave/
sumber
Contoh ini menunjukkan perbedaan antara peristiwa mousemove , mouseenter dan mouseover :
https://jsfiddle.net/z8g613yd/
HTML:
CSS:
JS:
onmousemove
: terjadi setiap kali pointer mouse dipindahkan ke elemen div.onmouseenter
: hanya terjadi ketika pointer mouse memasuki elemen div.onmouseover
: terjadi ketika pointer mouse memasuki elemen div, dan elemen turunannya (p dan span).sumber
<script>
jsfiddle.net/orc8empdPertanyaan lama, tetapi masih belum ada jawaban terbaru yang bagus dengan wawasan imo.
Saat ini, semua browser mendukung
mouseover/mouseout
danmouseenter/mouseleave
. Meskipun demikian, jQuery tidak mendaftarkan handler Andamouseenter/mouseleave
, tetapi diam-diam menempatkannya pada pembungkusmouseover/mouseout
seperti yang ditunjukkan kode berikut dan membuat interpretasinya sendiri yang sedikit berbedamouseenter/mouseleave
.Perilaku persis peristiwa sangat relevan pada "penangan delegasi". Sayangnya, jQuery juga memiliki interpretasi yang berbeda tentang apa yang menjadi penangan delegasi dan apa yang harus mereka terima untuk acara. Fakta itu ditunjukkan dalam jawaban lain untuk acara klik yang lebih sederhana.
Jadi bagaimana cara menjawab pertanyaan tentang jQuery dengan benar, yang menggunakan kata-kata Javascript untuk acara dan penangan, tetapi membuat keduanya berbeda dan bahkan tidak menyebutkannya dalam dokumentasinya?
Pertama perbedaan dalam Javascript "asli":
enter/over
yang sesuaileave/out
(mungkin terlambat / gelisah)mouseenter/mouseleave
mouseover/mouseout
Setelah beberapa pengujian, ini menunjukkan bahwa selama Anda tidak menggunakan jQuery "delegate handler with pendaftaran pemilih", emulasi tidak perlu tetapi masuk akal: Ini menyaring
mouseover/mouseout
peristiwa yangmouseenter/mouseleave
tidak akan didapat. Targetnya berantakan. Realmouseenter/mouseleave
akan memberikan elemen pawang sebagai target, emulasi mungkin mengindikasikan anak-anak dari elemen itu, yaitu apa pun yangmouseover/mouseout
dibawa.Tampilkan cuplikan kode
sumber