2012-01-27 18 views
14

Sto utilizzando alcuni codici di incorporamento che inseriscono HTML nella pagina in modo dinamico e poiché devo modificare l'HTML inserito in modo dinamico, voglio che una funzione jquery attenda che la pagina sia caricata, I provato delay ma non sembra funzionare.Fare qualcosa DOPO che la pagina è stata caricata completamente

Così, per esempio, il codice HTML inserito dinamicamente ha un elemento div#abc

e ho questo jquery:

if ($('#abc')[0]) { 
    alert("yes"); 
} 

l'avviso non si presenta.

Apprezzerei tutto l'aiuto

Grazie

+1

Dipende da dove/come si sta inserendo l'html dinamico che ha div # abc –

+1

Come è aggiunto il 'div # abc' all'HTML/DOM? – Stefan

+0

Hmm .. per esempio il google più un codice embed, inserisco un javascript nel mio html, che a sua volta carica un iframe e altri div, voglio modificare uno di questi elementi – 3zzy

risposta

34
$(window).load(function() { 
    .... 
}); 

Se si deve aspettare per un iframe (e non si preoccupano le attività, solo il DOM) - provare questo:

$(document).ready(function() { 
    $('iframe').load(function() { 
     // do something 
    }); 
}); 
+0

no, ancora no. – 3zzy

+0

potrebbe essere perché il codice embed inserisce html in un iframe e/o in modo asincrono? – 3zzy

+0

Attende tutte le risorse nella pagina CORRENTE. Hai anche iframe da aspettare? –

4

Prova questo:

$(document).ready(function() { 
    if ($('#abc')[0]) { 
     alert("yes"); 
    } 
}); 
9

Questo è lo scopo della jQuery's .ready() evento:

$(document).ready(function() { 
    if ($('#abc').length) //If checking if the element exists, use .length 
     alert("yes"); 
}); 

Descrizione: specificare una funzione da eseguire quando il DOM è completamente caricato.

+1

James ha ragione. Controlla la documentazione: http://api.jquery.com/ready/ ..il DOM sarà caricato e pronto per la manipolazione, quando questo si chiama. –

+1

E proprio come una breve nota ... Credo che la differenza tra un window.load e jQuery.ready è che attende window.load fino * * tutte le attività (ad esempio i fogli di stile, immagini, ecc) sono stati scaricati prima di essere chiamato mentre jQuery.ready si attiva non appena il DOM viene caricato e non gli importa se le immagini e simili sono ancora in fase di caricamento. –

+0

"i codici di incorporamento che inseriscono HTML alla pagina in modo dinamico" possono essere aggiunti molto bene al DOM dopo l'attivazione dell'evento 'ready'. – Stefan

6

Utilizzare il jQuery.ready dovrebbe essere sufficiente. Prova questo

$(document).ready(function(){ 
    //your code here 
}); 

o

$(function(){ 

}); 

che è una scorciatoia della prima.

1
$(window).load(function() { ... } 

può essere sufficiente, ma in caso contrario il codice embeded (cosa mai che può essere) potrebbe fornire alcune funzionalità di callback che si può fare uso di.

delay() deve essere utilizzato solo per ritardare animations.

Problemi correlati