Tengo una lista de elementos en una página con un conjunto de controles para MoveUp, MoveDown y Delete.Controladores de eventos jQuery que no se activan en IE
Los controles se encuentran en la parte superior de la lista ocultos de forma predeterminada. Como mouseover una línea de artículo, selecciono los controles con jQuery
//doc ready function:
..
var tools = $('#tools');
$('#moveup').click(MoveUp);
$('#movedn').click(MoveDn);
$('#delete').click(Delete);
..
$('li.item').mouseover(function(){
$(this).prepend(tools);
});
Esto funciona muy bien en Firefox .. las herramientas se mueven en la fila actual, y los eventos de clic llaman a las funciones ajax. Sin embargo, en IE6 e IE7 ... no se produce ningún clic. Intenté desvincularme de mouseout y rebinding en cada mouseover ... pero fue en vano.
También investigué varias razones fuera de javascript (por ejemplo, conflictos de png transparentes, índice z, posición: absoluta) .. tampoco se encontró ninguna solución.
Finalmente necesité agregar una fila de herramientas a cada elemento y mostrar/ocultar con el mouse sobre/salir. Funciona igual de bien; la única desventaja es que tengo mucho más marcado de "herramientas" en mi página.
¿Alguien sabe por qué IE ignora/cae/mata los eventos del mouse una vez que los objetos se mueven (usando prepend)? ¿Y por qué volver a unir el evento después tampoco tiene ningún efecto? Me mantuvo enojado durante casi 2 horas antes de darme por vencido.
Bastante, como dije, los eventos se perdieron. Pero ¿por qué no podría agregar los eventos a los nuevos objetos? Además, no quiero copiar los objetos, solo moverlos. Nuevamente, si los eventos se pierden, aún así podría volver a vincular. Además, si los eventos no se activan, se podría pensar que se seguiría el enlace href ... esto tampoco ocurre ... no sucede nada. – misteraidan
Es una limitación/error del DOM de IE y, lamentablemente, solo tienes que vivir con esto por ahora si vas a admitir IE. En cuanto a mover el elemento, no puede moverlo sin clonar primero o creará lo que se llama una referencia circular. Incluso cuando se mueve necesita var cloned = $ ("# element"). Clone (true); $ ("# elemento"). eliminar(); $ ("newplace"). append (clonado); –
bien, así que clonar es! montones de gracias. – misteraidan