Tengo un error de IE que no estoy seguro de cómo solucionarlo.IE7 y 8 no se activan jQuery haga clic en eventos para elementos anexados dentro de una tabla
Uso de jQuery Mover dinámicamente un menú para que aparezca en un elemento con el mouseover.
Mi código (simplificado) se ve algo como esto:
$j = jQuery.noConflict();
$j(document).ready(function()
{
//do something on the menu clicks
$j('div.ico').click(function() { alert($j(this).parent().html()); });
setUpActions('#tableId', '#menuId');
});
//on mouseover set up the actions menu to appear on mouseover
function setUpActions(tableSelector, menuSelector)
{
$j(tableSelector + ' div.test').mouseover(function()
{
//note that append will move the underlying
//DOM element with all events from it's old
//parent to the end of this one.
$j(this).append($j(menuSelector).show());
});
}
Este menú no parece registrar eventos correctamente para el menú después de que ha sido movido en IE7, IE8 e IE8-como-IE7 (sí MS, eso es realmente un 'nuevo motor de renderizado' en IE8, todos te creemos).
Funciona como se esperaba en todo lo demás.
Puedes ver el comportamiento en a basic demo here.
En la demo se pueden ver dos ejemplos de la cuestión:
- La imagen de fondo de las teclas deben cambiar en vuelo estacionario (hecho con un CSS: Selector de vuelo estacionario). Funciona en el primer mouseover pero luego persiste.
- El evento de clic no se activa; sin embargo, con las herramientas de desarrollo puede llamarlo de forma manual y todavía está suscrito.
Se puede ver (2) en las herramientas de dev de IE8:
- abierto page en IE8
- herramientas dev Abiertas
- Seleccionar "escritura" ficha y "consola" sub-pestaña
- Tipo:
$j('#testFloat div.ico:first').click()
para llamar manualmente a cualquier evento suscrito - Habrá una alerta en la página
Esto significa que soy no perdiendo las suscripciones al evento, todavía están allí, IE no las llama cuando hago clic.
¿Alguien sabe por qué ocurre este error (que no sea solo por el venerable motor de IE)?
¿Hay una solución?
¿Podría ser algo que estoy haciendo mal que simplemente funciona como se espera en todo lo demás?
Buena solución: ¡eso funciona! A pesar de que ': hover' es originalmente una extensión de IE, creo que solo aceptaré que no funciona aquí. ¡Aclamaciones! – Keith