veces obtiene objeto metodo funcion forma eventos evento elementos ejemplos ejecuta dinámicamente dinámica detener creados creado como bloquear asociar acceso javascript jquery dom javascript-events event-handling

javascript - obtiene - ¿Se pierden los eventos en jQuery cuando elimina() un elemento y lo agrega() en otro lugar?



metodo on jquery (3)

Sí, el enfoque de jQuery con remove() es desvincular todo lo vinculado con el propio bind jQuery (para evitar fugas de memoria).

Sin embargo, si solo desea mover algo en el DOM, no tiene que remove() primero. Solo append al contenido de su corazón, las encuadernaciones de eventos se quedarán :)

Por ejemplo, pegue esto en su firebug en esta página:

$(''li.wmd-button:eq(2)'').click(function(){ alert(''still here!'') }).appendTo(document.body)

Y ahora desplácese hacia abajo hasta la parte inferior de esta página y haga clic en el pequeño icono globy ahora enterrado debajo del pie de SO. Recibirás la alert . Todo porque tuve cuidado de no remove primero.

¿Qué sucede en jQuery cuando elimina () un elemento y lo agrega () a otro lugar?

Parece que los eventos están desenganchados, como si solo estuvieras insertando un html nuevo (que supongo que es lo que está sucediendo). Pero también es posible que mi código tenga un error, así que solo quería verificar este comportamiento antes de continuar.

Si este es el caso, ¿hay alguna manera fácil de volver a conectar los eventos a esa porción de HTML, o una forma diferente de mover el elemento sin perder el evento en primer lugar?


La función jQuery detach () es igual que remove () pero conserva los manejadores de eventos en el objeto que devuelve. Si tiene que quitar el artículo y colocarlo en otro lugar con todo, puede usarlo.

var objectWithEvents = $(''#old'').detach(); $(''#new'').append(objectWithEvents);

Verifique los documentos API aquí: http://api.jquery.com/detach/


utiliza jQuery1.3.1 live () para vincular eventos y no tendrás que preocuparte por esto ...

Actualización: los eventos en vivo están en desuso ahora, pero puede obtener el mismo efecto de $ (documento) .on ().