En una biblioteca que estoy usando Tengo la tarea de mover un elemento al frente del Dom cuando está sobrevolado. (Lo hago más grande, así que necesito verlo, luego lo encojo cuando sale el mouse).El elemento activo Mover pierde el evento mouseout en Internet Explorer
La biblioteca que estoy usando tiene una solución ordenada que usa appendChildren en el elemento activo para moverlo al final de su matriz, más hacia el final del dom y, a su vez, hacia la parte superior.
El problema es que creo que debido a que el elemento que está moviendo es el que está sobrepasando el mouseout se pierde el evento. Su mouse aún está sobre el nodo pero el evento mouseout no se está disparando.
He eliminado la funcionalidad para confirmar el problema. Funciona bien en Firefox pero no en ninguna versión de IE. Estoy usando jquery aquí para la velocidad. Las soluciones pueden estar en un simple javascript antiguo ... que sería una preferencia, ya que podría necesitar volver a la secuencia de subida.
No puedo usar z-index aquí ya que los elementos son vml, la biblioteca es Raphael y estoy usando la llamada toFront. Muestra usando ul/li para mostrar tema en un ejemplo sencillo
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="js/jquery.min.js" type="text/javascript"></script>
<style>
li
{
border:1px solid black;
}
</style>
</head>
<body>
<ul><li>Test 1</li></ul>
<ul><li>Test 2</li></ul>
<ul><li>Test 3</li></ul>
<ul><li>Test 4</li></ul>
<script>
$(function(){
$("li").mouseover(function(){
$(this).css("border-color","red");
this.parentNode.appendChild(this);
});
$("li").mouseout(function(){
$(this).css("border-color","black");
});
});
</script>
</body>
</html>
Editar: Aquí hay un enlace a un contenedor de pasta de JS para verlo en acción. http://jsbin.com/obesa4
** Editar 2: ** Ver todos los comentarios en todas las respuestas antes de publicar, ya que hay mucha más información sobre eso.
No puedo entender tu publicación. ¿Quieres que el evento 'mouseout' se dispare mientras tu mouse aún está sobre el elemento? ¿Cuál es tu pregunta real? – lincolnk
Y para this.parentNode.appendChild (this) ;, ¿está intentando volver a agregar el elemento LI existente? ¿Por qué no simplemente agregarle una clase de CSS en lugar de agregar/eliminar el mismo elemento con un nuevo CSS? ¿O su código original implica agregar un elemento completamente nuevo desde otro lugar dentro de la UL para imitar su efecto de tamaño "expandido" que mencionó al principio? – Gary
Linkol Estoy intentando que funcione el código de ejemplo, es decir, como en Firefox. El evento de mouseout no se dispara. Estoy usando li elementos como un ejemplo. Como digo en mi publicación, los elementos son en realidad elementos VML. Por lo tanto, cosas como el índice Z o la adición de clases no funcionarán, a menos que las personas puedan demostrar lo contrario. – johnwards