Cuando I replaceWith
un elemento para sacar uno del DOM, entonces replaceWith
vuelve, los eventos registrados no se activan. Necesito que los eventos permanezcan intactos.Eventos que no se registran después de reemplazarWith
Aquí es mi Javascript:
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function() {
replacement.replaceWith(original);
});
En la demo, al hacer clic en un elemento, se reemplaza con otro elemento utilizando replaceWith
. Cuando hace clic en el elemento nuevo, se reemplaza con el elemento original usando replaceWith
. Sin embargo, el manejador de clics ya no funciona (donde yo pensaría que debería).
¿Terminó usando la función de volver a adjuntar un evento, o alguna vez logró que los eventos en vivo funcionen? Estoy haciendo exactamente lo mismo, y me encantaría aprender de su experiencia. –
@Erick T, lo siento, pero sinceramente no lo recuerdo. Hice esta pregunta hace casi dos años. Creo que el uso de '$ .fn.live' no funcionó porque estaba tratando con elementos reales, no con un selector. ('$ .fn.delegate' (que no existía entonces) puede funcionar para usted como una alternativa 'en vivo'.) Debido a la respuesta que seleccioné, supongo que terminé volviendo a adjuntar el controlador de eventos. También puede probar la clonación profunda del elemento (que IIRC puede mantener los controladores de eventos en la última jQuery). – strager