在主文档上单击按钮,我正在使用以下方式加载某些div的内容
$("#my_div").load(function() {
alert("Loaded");
});
加载的内容只是脚本
<script>
alert("Init outside");
$(document).ready(function() {
alert("Init inside");
}
</script>
警报的顺序为“外部初始化”,“已加载”,“内部初始化”。
我是否正确,这是在脚本主体中初始化已加载脚本的正确方法,这意味着alert("Init outside")
驻留在哪里?不在.ready()
处理程序中吗?
因为在我真正的工作流程中,我绝对需要在处理.load()
回调之前初始化脚本。在.load()
回调中,我显示了已加载的模式,但在此之前,模式应自行初始化,即设置on('show.bs.modal')
处理程序等。
很奇怪,如果我需要这样的序列,初始化应该在$(document).ready()
处理程序外部进行,所以这就是我要问的原因。
UPD:问题不是重复的,因为它与JQuery定义的初始化和回调序列更多有关。
答案 0 :(得分:1)
这在某种程度上取决于您在模态初始化步骤中的操作,但是如果没有异步元素,则无需将初始化代码和实际显示该代码的代码放在单独的回调中。如果代码块在针对不同事件的回调中,则首先执行哪个模棱两可-您想确定它们将按顺序运行。
例如:
$(document).ready(function() {
$('#modal').on('show.bs.modal', function() {
// your init code
});
$('#modal').modal('show');
}
如上所述,将回调绑定到show.bs.modal
事件是一个同步操作,因此可以将代码放在同一块中。 .ready()
只是等待元素准备就绪(这是您所需要的全部),而.load()
则等待所有内容的加载,但是任何一个都可以确保元素在回调执行之前已经加载。>