【发布时间】:2013-04-27 11:18:20
【问题描述】:
我尝试使用.load() 和$.ajax 来获取一些需要附加到容器的 HTML,但是当我将返回的 HTML 中的 Javascript 附加到元素时,它并没有被执行。
使用.load():
$('#new_content').load(url+' #content > *',function() {
alert('returned');
});
我也尝试过切换到 $.ajax 调用。然后我从返回的 HTML 中提取脚本,然后将其附加到容器中,但同样的问题是,在这种情况下,JS 没有被执行甚至附加,据我所知,试图将 <script> 附加到像这样的 DOM 元素不受欢迎?
使用$.ajax:
$.ajax({ url: url }).done(function(response) {
var source = $("<div>").html(response).find('#overview_script').html();
var content = $("<div>").html(response).find('#content').html();
$('#new_content').html(content);
$('<script>').appendTo('#new_content').text(source).html();
});
理想情况下,我会在附加 HTML 后在回调中运行此 javascript,但变量被设置为从控制器返回的值。
总而言之,我正在尝试获取一些 HTML,其中包含需要在附加 HTML 后运行的 JS,但我没有运气使用 .load() 或 $.ajax() 作为返回的 HTML 中的脚本要么在添加时消失,要么根本不执行。
【问题讨论】:
-
谢谢,成功了!
-
我会更新这个作为答案
标签: javascript jquery ajax load