JQuery'nin mouseout () ve mouseleave () arasındaki fark nedir?


Yanıtlar:


101

Mouseleave olayı, olay köpürmesini işleme biçiminde mouseout'tan farklıdır. Bu örnekte mouseout kullanılmışsa, fare işaretçisi İç öğeden dışarı çıktığında, işleyici tetiklenir. Bu genellikle istenmeyen bir davranıştır. Öte yandan mouseleave olayı, işleyicisini yalnızca fare bağlı olduğu öğeyi terk ettiğinde tetikler, altından değil. Dolayısıyla bu örnekte, işleyici, fare Dış öğeden ayrıldığında ancak İç öğeden ayrılmadığında tetiklenir.

Kaynak: http://api.jquery.com/mouseleave/


1
mouseover vs mouseenter : jsfiddle.net/hejdav/945pv53h/3 (mouseout ve
mouseleave

Yukarıdaki açıklama, her iki yöntemin de çalıştığını ve aralarındaki farkın benim için işe yaradığını görünce çok daha net hale geliyor.
invinciblemuffi

15

Bundan mouseoutdaha iyi bir seçim olduğu zamanlar olabilir mouseleave.

Örneğin, üzerinde bir öğenin yanında görüntülenmesini istediğiniz bir araç ipucu oluşturduğunuzu varsayalım mouseenter. setTimeoutAraç ipucunun anında açılmasını önlemek için kullanırsınız . mouseleaveKullanırken zaman aşımını temizlersiniz, clearTimeoutböylece fare ayrılırsa araç ipucu görüntülenmez. Bu, zamanın% 99'unda çalışacaktır.

Ama şimdi, iliştirilmiş bir araç ipucunuz olan öğenin bir clickolay içeren bir düğme olduğunu varsayalım ve bu düğmenin kullanıcıya bir confirmveya alertkutuyla sorulduğunu da varsayalım . Kullanıcı düğmeye tıklar ve alertateşler. Kullanıcı, ipucunuzun açılma şansı olmayacak kadar hızlı bastı (şimdiye kadar çok iyi).

Kullanıcı alertkutu OK düğmesine basar ve fare öğeden ayrılır. Ancak tarayıcı sayfası artık kilitli durumda olduğundan, Tamam düğmesine basılıncaya kadar hiçbir javascript tetiklenmeyecektir, yani mouseleaveetkinliğiniz YANGIN OLMAYACAKTIR . Kullanıcı Tamam'a bastıktan sonra, araç ipucu açılır (istediğiniz gibi değildir).

mouseoutBu durumda kullanmak ateşleneceği için uygun çözüm olacaktır.


5
mouseoutBu durumda neden ateş açacağını açıklayabilir misin ? Tarayıcı hala kilitli durumda olmaz mouseoutmıydı?
user31782

10

jQuery API belgesi:

mouseout

Bu olay türü, köpürme olayından dolayı birçok baş ağrısına neden olabilir. Örneğin, bu örnekte fare işaretçisi İç öğenin dışına çıktığında, buna bir mouseout olayı gönderilecek ve ardından Dışa doğru damlayacaktır. Bu, bağlı fare işleyicisini uygun olmayan zamanlarda tetikleyebilir. Yararlı bir alternatif için .mouseleave () tartışmasına bakın.

Yani mouseleaveçünkü yukarıdaki nedenle tasarlanan özel bir olaydır.

http://api.jquery.com/mouseleave/


3

Olay Fare Çıkışı, fare seçili öğeden ayrıldığında ve ayrıca fare alt öğelerini de terk ettiğinde tetiklenir.

Etkinlik Mouseleave öğesi, işaretçi yalnızca seçili öğeyi terk ettiğinde tetiklenir.

Referans: W3School

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.