Javascript / jQuery: el evento mouseenter no se activa correctamente

Tengo un codigo como este

$('#singleColumn' + time).show(SHOW_COMPONENT_SPEED)
    .live('mouseenter', function() { $('#propertiesButtonSingle' + time).fadeIn(FADEIN_SPEED); })
    .live('mouseleave', function() { $('#propertiesButtonSingle' + time).fadeOut(FADEOUT_SPEED); });

que estoy usando para mostrar / ocultar un botón cuando los eventos mouseenter / mouseleave se activan en un cuadro.

El problema es que mi página es dinámica, es decir, sigo agregando HTML nuevo a la página usando la función JQuery .html (). Lo que sucede es que los eventos del mouse se activan solo para el último cuadro que agregué (los agrego arrastrando y soltando): prácticamente funciona bien para el primer cuadro, si agrego un segundo, los eventos se activan correctamente, pero cuando Muevo el mouse sobre el primer cuadro, no pasa nada. Si agrego un tercer cuadro, el segundo también deja de funcionar, etc.

El código que publiqué es para un tipo de caja, pero para los otros tipos es prácticamente el mismo aparte de los nombres de los selectores.

preguntado el 09 de enero de 11 a las 12:01

¿Qué es? time, y ¿se ejecuta esto para cada selector posible? -

time es una marca de tiempo para hacer diferentes ID para cada objeto. Este código se ejecuta cuando se crea un cuadro, por lo que el selector es el nombre del cuadro que se acaba de crear, ¿qué quiere decir con cada selector posible? -

Para todos: es como si los nuevos eventos del mouseenter sobrescribieran a todos los anteriores, incluso si el selector es diferente. -

Cualquier posibilidad de que estés reutilizando lo mismo time variable para todas las referencias de marca de tiempo? Si es así, los controladores solo harán referencia al valor más reciente de esa variable. -

También verifiqué esto, y la marca de tiempo es diferente cada vez. -

1 Respuestas

echa un vistazo a .delegate () - http://api.jquery.com/delegate

podría vincular eventos a un objeto más arriba en el árbol DOM y escuchar ...

Respondido el 09 de enero de 11 a las 16:01

Pero en este caso, el objeto no está más arriba en el árbol DOM, porque solo adjunto el controlador al objeto después de que se haya creado. - El monje de la codificación

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.