2011-09-28 9 views
6

Come si va a scrivere HTML nella posizione di chiamata di una funzione jQuery?Scrittura di un nuovo HTML nella posizione di chiamata

Ho una pagina HTML che contiene il seguente codice jQuery/JS:

... HTML contents ... 
<script> 
    functionName(); 
</script> 
... More HTML Contents... 

Come faccio ad avere functionName per aggiungere/scrivere nuovi contenuti dove è chiamato, invece di scegliere un altro ID nel documento e aggiungendo dopo.

JavaScript document.write può farlo, tuttavia, ho letto che rovina la capacità di jQuery di lavorare con il DOM in seguito.

risposta

2

Ispirato a this answer.

Sembra che gli script siano eseguiti in ordine, quindi al momento della chiamata, l'ultimo tag di script in quel momento è il tag script che contiene quella chiamata.

http://jsfiddle.net/vYPHb/2/

function test() { 
    // get last script tag at the point of calling - useful case of 
    // explicitly NOT using '$(document).ready' :) 

    $("script:last").replaceWith("hacked"); 
} 

HTML:

foo 

<script> 
    test(); 
</script> 

bar 
+0

Wow .. questo è piuttosto ummm .. approccio unico [sembra ragionevole] – monksy

+0

@monksy: è stato un po 'elaborato, ho cercato di renderlo più conciso – pimvdb

+0

Grazie, sembra un po' più pulito – monksy

1

Dipende da come document.write viene utilizzato. Se viene usato prima che la pagina abbia finito di caricarsi, allora va bene, ma dovrebbe essere usato dopo (ad esempio attivato dall'evento di caricamento della pagina), quindi lo metterà in uno stato di eccezione (write causa lo streaming del documento apri e inizia a scrivere, che risulta in una pagina vuota (in IE), o in un documento aperto che non finisce mai [document.close viene chiamato esplicitamente dal browser una volta che la pagina ha terminato il caricamento.]

+0

La particolare funzione sta gestendo un'azione onclick sul contenuto in fase di scrittura . – monksy

Problemi correlati