有一个带占位符的网页(普通div)。通过ajax调用我将<form>
和<script>
加载到占位符中。该脚本包含必要的javascript以初始化表单(即,例如禁用控件以使表单只读等)。这是我的一段代码;它有效,但评论的部分不起作用。因为脚本引擎找不到对象tristate_DisableControl,这是我通过ajax调用的那些脚本中的一个函数。
$(document).ready(function() {
// $('#site_preferences_content div').each(function() {
// if (typeof (window.tristate_DisableControl) == 'undefined') {
// if (typeof (window.console) != 'undefnied')
// console.log((new Date()).toTimeString() + ' not logable');
// pausecomp(1000);
// }
// else
// tristate_DisableControl(this);
// }); //end $('#site_prefrences_content div').each()
setTimeout(function() {
$('#site_preferences_content div').each(function() { tristate_DisableControl(this); })
}, 1000);
});
我认为当$(document).ready()执行DOM时会正确加载...
答案 0 :(得分:1)
页面加载完成后会发生ready
事件。它不等待异步AJAX调用完成。
要在加载额外内容后运行代码,请使用load
方法的回调。例如:
$('#site_preferences_content').load('content.html', function() {
$('#site_preferences_content div').each(function() {
tristate_DisableControl(this);
}
});
答案 1 :(得分:0)
我不确定我是否正确理解了你的问题,但如果AJAX调用返回tristate_DisableControl
的声明,那么不,DOMReady
不等到所有AJAX调用都被执行(毕竟,它怎么可能知道将进行多少次AJAX调用?)
您必须使用AJAX函数的success
/ complete
回调来找出它何时完成加载。
答案 2 :(得分:0)
文档就绪事件在加载整个文档时触发,这不包括使用ajax加载的脚本,因为如果不是这种情况,如果脚本一直在进行ajax调用,则就绪事件可能永远不会触发。
你应该在ajax加载方法上使用回调。