2011-09-28 12 views
6

¿Cómo se hace para escribir HTML en la posición de llamada de una función jQuery?Escribir nuevo HTML en la posición de llamada

que tienen una página HTML que contiene el siguiente código de jQuery/JS:

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

¿Cómo llego functionName a anexar/escribir nuevos contenidos donde se llama, en lugar de seleccionar otro ID en el documento y anexando después.

document.write de JavaScript puede hacer esto, sin embargo, he leído que arruina la capacidad de jQuery para trabajar con el DOM más tarde.

Respuesta

2

Inspirado por this answer.

Parece que las secuencias de comandos se ejecutan en orden, por lo que en el momento de la llamada, la última etiqueta de secuencia de comandos en ese momento es la etiqueta de secuencia de comandos que contiene esa llamada.

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 ... eso es un poco ummm .. enfoque único. [Parece razonable] – monksy

+0

@monksy: Fue un poco elaborado, traté de hacerlo más conciso. – pimvdb

+0

Gracias. Eso se ve un poco más limpio – monksy

1

Depende de cómo se está utilizando document.write. Si se está utilizando antes de que la página haya terminado de cargarse, entonces está bien, pero debería usarse después (digamos desencadenado desde el evento de carga de página), entonces colocará el documento en un estado de excepción (write hace que la secuencia de documentos abrir y comienza a escribir, lo que resulta en una página en blanco (en IE), o un documento abierto que nunca termina [document.close es explícitamente llamado por el navegador una vez que la página ha terminado de cargarse].

+0

La función particular es manejar una acción de clic sobre el contenido que se escribe . – monksy

Cuestiones relacionadas