2011-01-20 18 views
11

Me gustaría que todo el contenido cargado de AJAX en mi aplicación sea evaluado por mi script de JQuery de la aplicación, al igual que el contenido cargado normal. p.ej. JQuery escanea a través del contenido cargado AJAX para los selectores, al igual que 'modales' caja de conexiones, etc.Vuelva a ejecutar la aplicación Javascript en el contenido cargado de ajax

Toda mi Javascript se encuentra en la document.ready normal, que funciona bien para HTTP cargado páginas normales:

$(document).ready(function(){ 
    // my apps javascript 
}); 

I Me gustaría utilizar algo como .ajaxComplete para iniciar una nueva ejecución de todo lo contenido en el documento. listo para evaluar el contenido AJAX recién cargado para los selectores de jquery.

$(document).ajaxComplete(function(){ 
    // Re-run all my apps javascript 
}) 

¿Hay algún código que pueda incluir .ajaxComplete para hacer esto?

Espero que esto tenga sentido, por favor, avíseme si no es así, y voy a editar los detalles de la pregunta.

+0

¿Puede explicarnos más sobre lo que está buscando? Siento que todavía falta algo en mi respuesta, y quiero asegurarme de que encuentres las respuestas que buscas. – jmort253

+0

@ jmort253 - Gracias por su ayuda, la respuesta del cazador es más o menos lo que quería entender. –

Respuesta

12

se podría encapsular todo en su document.ready en una función y simplemente llamar a esa función de nuevo para volver a enlazar

o ...

un mejor enfoque sería tomar ventaja de la live() y delegate() jQuery métodos para que todos los elementos actuales y futuros que coincidan con esos selectores también estén vinculados a estos eventos.

ejemplo usando live(): http://api.jquery.com/live/

$('.clickme').live('click', function() { 
    //all elements that exist now and elements added later 
    //with this class have this click event attached 
}); 

ejemplo usando delegate(): http://api.jquery.com/delegate/

$("table").delegate("td", "hover", function(){ 
    //all current and future td elements in all current tables 
    //have this hover event attached 
}); 
+0

Gracias cazador, esto me puso en el camino correcto. –

+2

A partir de jQuery 1.7, el método .live() está en desuso. Use .on() para adjuntar manejadores de eventos. Los usuarios de versiones anteriores de jQuery deben usar .delegate() en preferencia a .live(). – Nazariy

1

Lo que hay que hacer es definir el código de una función en lugar de forma anónima. Las funciones anónimas no son reutilizables, pero si escribe una función, esa función puede vincularse a múltiples eventos.

Cuestiones relacionadas