2010-11-19 18 views
22

Estoy usando .load() para extraer archivos HTML estáticos en mi página HTML principal. Existen los guiones y los selectores que he escrito dentro:Ejecución de scripts de JQuery en contenido cargado de AJAX

$(document).ready(function(){}); 

Pero ellos no funcionan en el contenido cargado AJAX. He leído que esto se debe a que los selectores que estoy usando no están disponibles.

¿Hay una mejor manera de hacerlo? La adición de la secuencia de comandos a la función window.load no funciona bien:

$(window).load(function() {}); 
+0

sólo para confirmar, sus $ (documento). ¿Las funciones preparadas no se están ejecutando dentro del .html que está cargando en su página maestra? ¿o el $ (documento) .Ready no está ubicando los elementos que está cargando a través de AJAX? – WiseGuyEh

+0

Esto último. No hay $ (documento). Preparado en el archivo .html cargado. Debería haber? – mmcglynn

Respuesta

65
$(document).ajaxComplete(function(){ 
    // fire when any Ajax requests complete 
}) 

ajaxComplete()

+1

Gracias Jman, ¡eso es genial! – mmcglynn

+1

muchas gracias! Estuve atascado en esto durante la mitad del día y ahora puedo continuar con mi código: D – justinl

+1

Pero eso disparará después de cada llamada AJAX ... lo que podría afectar el rendimiento, ¿no? ¿Hay alguna manera de activar manualmente el jquery? – Bryce

3

Hay más de una opción:

  1. puede agregar scripts de inicialización [$(this).click...] en función del callback$.load()
  2. puede usar $.live(), que crea controladores incluso para objetos cargados/creados dinámicamente.

Más aquí:
devolución de llamada: http://api.jquery.com/load/ (nótese la función "complete()")
aprieto: http://api.jquery.com/live/

Editar: Mi error, fue live(), no bind(), gracias chicos

+0

Pensé que era '$ .live()' para objetos creados dinámicamente. http://api.jquery.com/live/ –

+0

Creo que te refieres a la función 'live', que es el equivalente de bind, pero funciona para elementos creados dinámicamente. – Tesserex

1

Puede vincular eventos al contenido cargado dinámicamente a través de jQuery's $.live().

De jQuery http://api.jquery.com/live/:

Adjuntar un manejador para el evento de todos los elementos que coinciden con el selector de corriente, ahora y en el futuro.

0

jQuery load toma un argumento de la función de devolución de llamada opcional que se puede utilizar para hacer cualquier ajuste que necesita después de su contenido ajax-ed se carga

Cuestiones relacionadas