我在这里多次看到这个问题,有很多不同的答案。当我从 JQuery 1.5.1 迁移到 1.9.1 时,此代码停止工作。
$.ajax(
{
type: 'GET',
url: MapPath($(this).attr('path')),
cache: false,
data: '{}',
dataType: 'html',
success: function (result) {
result = $.parseHTML(result);
$('#dialog').html(result);
$('#dialog').dialog('open');
}
}
});
结果包含指向具有 src 属性的 javascript 文件的链接。在我升级添加到#dialog 容器后加载和执行的脚本之前。现在它没有。根据一个建议,我在 parseHTML() 方法之后尝试了这个:
$.getScript("/myscript.js");
这很完美,但这不是我想要的。装载容器不必知道有关装载容器的任何信息。如果加载的容器需要包含脚本,则该脚本需要在容器加载时运行。
我已经尝试过查找脚本元素然后 eval() 它们的建议。但是一旦我 parseHTML() 脚本就不再存在了。为什么我必须使用 parseHTML() 请参阅我的另一个问题。
也许这些事情是相关的。