2010-11-19 8 views
22

Sto usando .load() per estrarre i file HTML statici sulla mia pagina HTML principale. Gli script e selettori che ho scritto esistono all'interno:Esecuzione di script JQuery su contenuto caricato AJAX

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

Ma non funzionano sul contenuto caricato AJAX. Ho letto che questo è perché i selettori che sto usando non sono disponibili.

C'è un modo migliore per farlo? Aggiungendo lo script alla funzione window.load non funziona neanche:

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

solo per confermare, i vostri $ (document). Le funzioni .ready non sono in esecuzione nel .html che stai caricando nella tua pagina principale? oppure $ (document) .ready non sta localizzando gli elementi che stai caricando tramite AJAX? – WiseGuyEh

+0

Quest'ultimo. Non c'è $ (documento) .ready nel file .html caricato. Dovrebbe esserci? – mmcglynn

risposta

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

ajaxComplete()

+1

Grazie, Jman, è fantastico! – mmcglynn

+1

grazie mille! Sono stato fermato su questo per metà giornata e ora posso andare avanti con il mio codice: D – justinl

+1

Ma questo sparerà dopo ogni chiamata AJAX ... che potrebbe influenzare le prestazioni, giusto? C'è un modo per attivare manualmente il jquery? – Bryce

3

Ci sono più di un'opzione:

  1. è possibile aggiungere script di inizializzazione [$(this).click...] in funzione del callback$.load()
  2. è possibile utilizzare $.live(), che crea gestori anche per oggetti caricati/creati dinamicamente.

Maggiori informazioni qui:
callback: http://api.jquery.com/load/ (notare la funzione "complete()")
legano: http://api.jquery.com/live/

Edit: Il mio errore, è stato live(), non bind(), grazie ragazzi

+0

Ho pensato che fosse '$ .live()' per oggetti creati dinamicamente. http://api.jquery.com/live/ –

+0

Penso che intendiate la funzione 'live', che è l'equivalente di bind, ma funziona per elementi creati dinamicamente. – Tesserex

1

È possibile associare eventi a contenuto caricato in modo dinamico tramite jQuery's $.live().

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

Collegare un gestore per l'evento per tutti gli elementi che corrispondono al selettore di corrente, ora e in futuro.

0

jQuery load prende una funzione argomento di callback opzionale che si potrebbe usare per fare alcuna configurazione avete bisogno dopo suo sito web Ajax-ed è caricato

Problemi correlati