我的web应用程序动态加载其用户界面部分jquery.ajax
。新的UI部分虽然带有脚本。我加载它们的方式:在ajax加载的页面片段中运行脚本
使用...
$.ajax({
url: url,
dataType: 'html',
success: function(data, textStatus, XMLHttpRequest) {
$(target_selector).html(data);
update_ui_after_load();
}
});
这几乎工程。问题是包含在页面动态部分中的脚本在将新页面片段插入到DOM之前运行。但通常这些脚本想要修改它们随附的HTML。我最好的解决方案哈克到目前为止,仅仅是延迟脚本的时候一些合理的量,让DOM插入发生,通过在setTimeout
包裹他们:
window.setTimeout(function() {
// process downloaded Fragment
}, 300);
显然,这是不可靠的,可怕的。什么是更好的方法?
我不太确定'$(document).ready()'是否在这里工作,但值得一试。如果没有,你可以在你的ajax成功回调函数中添加一些东西来启动新加载的javascript。 – Eliasdx 2011-04-13 22:46:15
它仍然运行得太早。等待DOM在运行之前加载,但在ajax调用返回时,DOM通常已经加载。在将HTML交给成功函数并将其合并到主页面之前,Jquery运行脚本。 – Leopd 2011-04-14 15:41:16