簡體   English   中英

jQuery.load()不能與已定義的函數一起用作回調嗎?

[英]jQuery.load() doesn't work with a defined function as a callback?

有人可以向我解釋為什么我使用以下代碼塊在競賽條件下奔跑:

$("#someid").load( "home.php", callback_function );
function callback_function()
{
    //some jQuery.get() goes here
}

而不是這段代碼:

$("#someid").load( "home.php", function(){ callback_function(); } );
function callback_function()
{
    //some jQuery.get() goes here
}

第一段代碼中的爭用條件是,加載完成后將不會執行callback_function()中的處理,而是似乎異步運行,並且會弄亂一些UI內容(此UI內容取決於jQuery.get()。返回)。 我是jQuery / JavaScript的新手,想知道為什么我需要顯式的“ function(){callback_function();}”。 謝謝!

更新

看來您的問題是關於使通話異步還是同步。 如果需要異步ajax調用,我通常會重構代碼,但是您應該能夠通過使用基本jQuery ajax來解決此問題。

$.ajax({
  // will not work for jsonp or cross domain requests, will force success to run before
  // other code
  async: false,
  url: "load.php",
  dataType: "html",
  success: function(response) {
    $("#some_id").html(response);
  }
});

看起來您的回調函數在被使用之前並未聲明為一個函數。

試一下:

$("#someid").load( "home.php", callback_function );
function callback_function()
{
    //some jQuery.get() goes here
}

我建議使用JSLint(JSLint.com),因為它將檢查您的語法並查找這些錯誤。

簽出一個變量內的jQuery回調函數

像這樣聲明函數

function callback_function(){
  //some jQuery.get() goes here
}

要么

var callback_function = function(){
  //some jQuery.get() goes here
}

然后試試這個

$("#someid").load( "home.php",null, callback_function );

將回調參數作為第三個參數傳遞,以避免與jquery加載API混淆(很抱歉,無法獲得確切的單詞:))。

請參閱負載文檔

Javascript或任何腳本語言都可以按詞法執行代碼。 我的意思是說它沒有主要的排序方法。

因此,在第一個代碼段中,將調用load函數,並為其分配一個尚未聲明的函數。 在第二個代碼片段中,該函數被內聯到方法負載中,因此它不會失敗。

如果您先定義函數,然后調用load,則您的第一個代碼段也應該工作。

function callback_function(){

}

$("#someid).load("home.php", callback_function);

暫無
暫無

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

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