Aquí hay un ejemplo condensado.Al hacer un .replaceWith() en jQuery no se conservan los enlaces de eventos
Tenga en cuenta que la clase .chat-reply tiene asociado un controlador de evento click.
El HTML (botón de respuesta):
<div class="container">
<a href="#" class="btn small chat-reply">Reply</a>
</div>
Esta función jQuery se llama cuando alguien hace clic en otro botón que envía un mensaje al servidor que se guardan en la base de datos. Esto se hace a través de ajax y se realiza con éxito. En el éxito .ajax mencionada()() devolución de llamada esta función se llama:
$.ajax({
type : 'GET',
url : '/some_controller/some_method',
success : function(data) {
$('.container').replaceWith(data);
}
});
El 'datos' en la devolución de llamada éxito anterior reemplazará toda la div .container incluyendo el botón .chat-respuesta del niño. Después de esto replaceWith(), el evento click ya no está vinculado al botón.
Lógicamente, estoy intentando que el usuario final publique un mensaje en una línea de tiempo, luego haga que aparezca ese mensaje en la línea de tiempo sin que necesite actualizar la pantalla.
Su ejemplo de código es un poco confuso para mí. Si no te importa aclarar un poco, sería genial. – generalopinion
Sry el bloque estaba apuntando desde el antiguo "directo" al "encendido", pero el ejemplo de Vigrond es cómo haces un "encendido". Sería casi mejor adjuntar el evento después de que se recibió el html en su devolución de llamada. –