Entonces, después de leer una pregunta recientemente respondida , no estoy claro si realmente entiendo la diferencia entre el mouseenter()
y mouseover()
. La publicación dice
Ratón sobre():
Se disparará al ingresar a un elemento y siempre que ocurra algún movimiento del mouse dentro del elemento.
MouseEnter ():
Se disparará al entrar en un elemento.
Se me ocurrió un violín que usa ambos y parecen ser bastante similares. ¿Puede alguien explicarme la diferencia entre los dos?
También he intentado leer las definiciones de JQuery, ambas dicen lo mismo.
El evento mouseover se envía a un elemento cuando el puntero del mouse ingresa al elemento
El evento mouseenter se envía a un elemento cuando el puntero del mouse ingresa al elemento.
¿Alguien puede aclarar con un ejemplo?
fuente
Respuestas:
Usted ve el comportamiento cuando su elemento objetivo contiene elementos secundarios:
http://jsfiddle.net/ZCWvJ/7/
Cada vez que su mouse ingresa o sale de un elemento hijo,
mouseover
se activa, pero nomouseenter
.fuente
mouseleave
evento: jsfiddle.net/ZCWvJ/232 jsfiddle.net/ZCWvJ/233 Si termina donde es lo mismo que entrar + salir, entonces el conteo para más sería la suma de Los recuentos para entrar y salir.var n = + el.text();
lugar devar n = el.text();
? Solo pido curiosidad.+
operador para forzar la cadena devueltael.text()
a un número. ¿Lo necesitaba ? No. En este caso, la siguiente declaración que usen
también lo obligaría a un número. Entonces, ¿por qué lo usé? No estoy seguro ... esto fue hace 2 años. Es un buen habito. Hace explícita mi intención. Probablemente lo tenía originalmenten + 1
antes de guardar, pero decidí reducir mi código por 2 caracteres y simplemente usarlo++n
.n + 1
sería no coaccionarn
a un número, pero en lugar de ello coaccionar1
a una cadena resultante de la producción de, por ejemplo0111111
.Este es uno de los mejores ejemplos que he encontrado de:
http://bl.ocks.org/mbostock/5247027
fuente
Aunque funcionan de la misma manera, sin embargo, el
mouseenter
evento solo se dispara cuando el puntero del mouse ingresa al elemento seleccionado . Elmouseover
evento se activa si un puntero del mouse también ingresa a elementos secundarios .fuente
Vea el código de ejemplo y la demostración en la parte inferior de la página de documentación de jquery:
http://api.jquery.com/mouseenter/
fuente
El evento mouseenter difiere del mouseover en la forma en que maneja el burbujeo de eventos . El evento mouseenter solo activa su controlador cuando el mouse ingresa al elemento que está vinculado, no a un descendiente . Consulte: https://api.jquery.com/mouseenter/
El evento mouseleave difiere del mouseout en la forma en que maneja el burbujeo de eventos . El evento mouseleave solo activa su controlador cuando el mouse abandona el elemento al que está vinculado, no un descendiente . Consulte: https://api.jquery.com/mouseleave/
fuente
Este ejemplo demuestra la diferencia entre los eventos mousemove , mouseenter y mouseover :
https://jsfiddle.net/z8g613yd/
HTML:
CSS:
JS:
onmousemove
: ocurre cada vez que el puntero del mouse se mueve sobre el elemento div.onmouseenter
: solo ocurre cuando el puntero del mouse ingresa al elemento div.onmouseover
: ocurre cuando el puntero del mouse ingresa al elemento div y sus elementos secundarios (p y span).fuente
<script>
jsfiddle.net/orc8empdVieja pregunta, pero todavía no hay una buena respuesta actualizada con perspicacia de la OMI.
En estos días, todos los navegadores son compatibles
mouseover/mouseout
ymouseenter/mouseleave
. Sin embargo, jQuery no registra su manejadormouseenter/mouseleave
, sino que los coloca silenciosamente en envoltoriosmouseover/mouseout
como lo muestra el siguiente código y hace su propia interpretación ligeramente diferente demouseenter/mouseleave
.El comportamiento exacto de los eventos es especialmente relevante en los "controladores de delegados". Desafortunadamente, jQuery también tiene su propia interpretación diferente de qué son los controladores de delegados y qué deben recibir para los eventos. Ese hecho se muestra en otra respuesta para el evento de clic más simple.
Entonces, ¿cómo responder adecuadamente una pregunta sobre jQuery, que utiliza la redacción de Javascript para eventos y controladores, pero hace que ambos sean diferentes y ni siquiera menciona eso en su documentación?
Primero las diferencias en Javascript "real":
enter/over
obtiene un correspondienteleave/out
(posiblemente tarde / nervioso)mouseenter/mouseleave
mouseover/mouseout
Después de algunas pruebas, muestra que mientras no use jQuery "controladores de delegado con registro de selector", la emulación es innecesaria pero razonable: filtra
mouseover/mouseout
eventos quemouseenter/mouseleave
no se obtendrían. Sin embargo, el objetivo está desordenado. Lo realmouseenter/mouseleave
le daría al elemento controlador como objetivo, la emulación podría indicar hijos de ese elemento, es decir, lo que sea quemouseover/mouseout
lleve.Mostrar fragmento de código
fuente