在加载的脚本中,在.ready回调之前调用JQuery .load回调,初始化加载的脚本的正确方法是什么?

时间:2018-07-23 02:19:11

标签: javascript jquery

在主文档上单击按钮,我正在使用以下方式加载某些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定义的初始化和回调序列更多有关。

1 个答案:

答案 0 :(得分:1)

这在某种程度上取决于您在模态初始化步骤中的操作,但是如果没有异步元素,则无需将初始化代码和实际显示该代码的代码放在单独的回调中。如果代码块在针对不同事件的回调中,则首先执行哪个模棱两可-您想确定它们将按顺序运行。

例如:

$(document).ready(function() {
  $('#modal').on('show.bs.modal', function() {
    // your init code
  });

  $('#modal').modal('show');
}

如上所述,将回调绑定到show.bs.modal事件是一个同步操作,因此可以将代码放在同一块中。 .ready()只是等待元素准备就绪(这是您所需要的全部),而.load()则等待所有内容的加载,但是任何一个都可以确保元素在回调执行之前已经加载。