簡體   English   中英

在加載的腳本中,在.ready回調之前調用JQuery .load回調,初始化加載的腳本的正確方法是什么?

[英]JQuery .load callback is called before .ready callback in loaded script, what is proper way of initialization loaded scripts?

在主文件上單擊按鈕,我正在加載某些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定義的初始化和回調序列更多有關。

這在某種程度上取決於您在模態初始化步驟中的操作,但是如果沒有異步元素,則無需將初始化代碼和實際顯示該代碼的代碼放在單獨的回調中。 如果代碼塊在針對不同事件的回調中,則首先執行哪個模棱兩可-您想確定它們將按順序運行。

例如:

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

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

show.bs.modal將回調綁定到show.bs.modal事件是同步操作,因此可以將代碼放在同一塊中。 .ready()只是等待元素准備就緒(這是您所需要的),而.load()等待所有內容的加載,但是這兩種方法都可以確保元素在回調執行之前就已經加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM