2011-12-09 19 views
6

Estoy usando jquery load para obtener un div en una página diferente e insertarlo en mi página. algo como esto:jquery load with inline javascript

$('#mydiv').load("/Pages/grid2.aspx" + " #otherpagediv"); 

En el div en la otra página, hay javascript en el div. El javascript no se encuentra, solo el contenido html. ¿Hay alguna manera de obtener todo en el div especificado?

+0

¿Nos puede proporcionarle el código JavaScript del DIV que se carga? El código es inicial? – Theodore

Respuesta

0

JavaScript también debe venir junto con la respuesta. Debe asegurarse de que /Pages/grid2.aspx envíe la respuesta requerida desde el servidor. También la URL que ha pasado al método load tiene un espacio en ella. Creo que deberías corregir eso y probarlo.

$('#mydiv').load("/Pages/grid2.aspx" + "#otherpagediv"); 
+0

esto es en realidad por diseño de la función 'load'. El espacio se usa para cargar una parte de la página. –

+0

@Alexander - No sabía esto, es bueno saber gracias. – ShankarSangoli

2

De documentation:

Nota: Al llamar .load() usando una dirección URL sin una expresión sufijo selector de , el contenido se pasa a .html() antes de scripts que se eliminado. Esto ejecuta los bloques de script antes de que se descarten.

Si .load() se llama sin embargo con una expresión selector de añade a la URL , los guiones son despojados a cabo antes de la DOM siendo actualizada, por lo que nunca se ejecutan.

6

Esto funciona:

$.get('/Pages/grid2.aspx', function (data) { 
    $('#mydiv').html($('<div></div>').html(data).find('#otherpagediv').clone()); 
}); 

Demostración en directo:http://jsfiddle.net/FRbnD/4/show/light/

Para comprender la demo, ver el código fuente de las dos páginas que lo componen:
código Fuente de la demostración: http://jsfiddle.net/FRbnD/4/
Código fuente de la "otra página": http://jsfiddle.net/MWkSj/1/

La idea es recuperar la otra página a través de una solicitud $.get, y luego encontrar el #otherpagediv y clonarlo. A continuación, agrega el clon al #mydiv. Si inserta un clon en el DOM y si ese clon contiene un elemento SCRIPT, ese script se ejecutará.

+0

¡Esto definitivamente debe agregarse a la página de jQuery API! –

0

http://www.coursesweb.net/ajax/execute-javascript-code-ajax-response_t

Puede que le resulte útil esta página, he utilizado la secuencia de comandos, se utiliza eval()

// this function create an Array that contains the JS code of every <script> 
// then apply the eval() to execute the code in every script collected 
function parseScript(strcode) { 
var scripts = new Array();   // Array which will store the script's code 

// Strip out tags 
while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) { 
var s = strcode.indexOf("<script"); 
var s_e = strcode.indexOf(">", s); 
var e = strcode.indexOf("</script", s); 
var e_e = strcode.indexOf(">", e); 

// Add to scripts array 
scripts.push(strcode.substring(s_e+1, e)); 
// Strip from strcode 
strcode = strcode.substring(0, s) + strcode.substring(e_e+1); 
} 

// Loop through every script collected and eval it 
for(var i=0; i<scripts.length; i++) { 
try { 
    eval(scripts[i]); 
} 
    catch(ex) { 
    // do what you want here when a script fails 
    } 
} 
}