Fareyle üzerine gelme ve mouseenter etkinlikleri arasındaki fark nedir?


153

Ben her zaman mouseoverolayı kullandım , ama buldum jQuery belgeleri okurken mouseenter. Aynı şekilde işlev görüyorlar.

İkisi arasında bir fark var mı, varsa ne zaman kullanmalıyım?
( mouseoutVs için de geçerlidir mouseleave).

Yanıtlar:


118

JQuery doc sayfasından aşağıdaki örneği deneyebilirsiniz . Çok açık hale getiren hoş, küçük, etkileşimli bir demo ve aslında kendiniz görebilirsiniz.

Kısacası, bir öğenin üzerindeyken (alt öğesinden VEYA üst öğesinden) gelen bir fare üzerinden üzerine gelme olayının oluştuğunu fark edersiniz, ancak bir fare enter olayı yalnızca fare bu öğenin dışından bu öğeye hareket ettiğinde gerçekleşir.

Veya olarak mouseover()dokümanlar koydu:

[ .mouseover()] olay köpürmesi nedeniyle birçok baş ağrısına neden olabilir. Örneğin, fare imleci bu örnekte İç öğenin üzerine geldiğinde, bunun üzerine bir fareyle üzerine gelme olayı gönderilir, ardından Dış'a kadar damlar. Bu, bağlı fareyle işleme işleyicimizi uygunsuz zamanlarda tetikleyebilir. .mouseenter()Yararlı bir alternatif için tartışmaya bakın .


40
mouseenter"Yalnızca fare ana öğeden öğeye hareket ettiğinde gerçekleşir" doğru değildir . Olay , öğenin dışında olmaktan içinde öğeye dönüştüğünde gerçekleşir . Farenin hangi öğeden geldiği önemli değil. Farenin genellikle ebeveynden geleceği doğrudur, ancak her zaman değil. Örneğin, ebeveynin dolgusu veya kenarlığı yoksa, fare doğrudan büyükbaba veya büyükanneden girebilir ve mouseenteryine de ateş eder. Aslında, öğeyi görünüm penceresinin dışından bile girebilir (öğe kenarda sağda ise) ve olay yine de tetiklenir.
callum

2
DEMO en iyi açıklamadır;)
Luckylooke

gerçek, sadece demo ile oynamak.
Kevin Wheeler


4

Bu tür sorularla çoğu zaman doğru olduğu gibi, Quirksmode en iyi cevaba sahiptir .

Ben, çünkü jQuery hedeflerinden biri tarayıcı agnostic şeyler yapmak olduğunu, her iki olay adı kullanarak aynı davranışı tetikleyecek olduğunu hayal ediyorum. Düzenleme: diğer yayınlar sayesinde, şimdi durum böyle değil


0
$(document).ready(function() {
$("#outer_mouseover").bind
("Mouse Over Mouse Out",function(event){
console.log(event.type," :: ",this.id);})
$("#outer_mouseenter").bind
("Mouse enter Mouse leave",function(event){
console.log(event.type," :: ",this.id);})
 });


öğenizin alt öğesi yoksa, öğenin alt öğesi varsa, çiftler oldukça farklı davranır. Özetle, farenizi bir öğeye ve daha sonra çocuğuna geçirirseniz, fareyle üzerine gelme / fareyi çıkarma her ikisi de ateş eder, oysa fareniz hala teknik olarak öğenin içinde olduğu için yalnızca fare görevlisi ateş eder.
naveed
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.