繁体   English   中英

使用内联javascript加载jquery

[英]jquery load with inline javascript

我正在使用jquery load来获取不同页面上的div并将其插入到我的页面中。 这样的事:

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

在另一页的div中,div中有javascript。 javascript没有出现,只有html内容。 有没有办法在指定的div中获取所有内容?

这有效:

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

现场演示: http //jsfiddle.net/FRbnD/4/show/light/

要了解演示,请查看构成它的两个页面的源代码:
演示源代码: http//jsfiddle.net/FRbnD/4/
“其他页面”的源代码: http//jsfiddle.net/MWkSj/1/

想法是通过$.get请求检索其他页面,然后找到#otherpagediv克隆它 然后将克隆附加到#mydiv 如果将克隆插入DOM,并且该克隆包含SCRIPT元素,则将执行该脚本。

来自文档

注意:使用不带后缀选择器表达式的URL调用.load()时,在删除脚本之前将内容传递给.html()。 这将在丢弃之前执行脚本块。

但是,如果使用附加到URL 的选择器表达式调用.load(),则在更新DOM之前会删除脚本,这就是它们永远不会被执行的原因。

JavaScript也应该出现在响应中。 您必须确保/Pages/grid2.aspx应从服务器端发送所需的响应。 您传递给load方法的url也有一个空格。 我认为你应该纠正这个并尝试一下。

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

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

您可能会发现此页面有用,我使用了脚本,它使用了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
  }
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM