2012-12-25 89 views
1

在網站上工作時,我有一個內容區域部門,其內容我想根據點擊的圖像進行更新。現在,我在內容區使用了一個定製的滾動條。現在,在第一次我寫了下面的代碼片段的onclick腳本函數:JQuery.Post()的目的和區別

function xyz(){ 
    $("#content-area").load("abc.php"); 
    $("#content-area").mCustomScrollbar({scrollButtons:{enable:true}}); 
} 

但腳本的第二行沒有迴應即,我不是得到滾動條。相反,當我用這段代碼段,它的工作:

$.post("abc.php", function(data){ 
    $("#content-area").html(data); 
    $("#content-area").mCustomScrollbar({scrollButtons:{enable:true}}); 
}); 

我想知道的$。員額(),爲什麼第一個片段沒有工作的功能,而第二個片段工作?

回答

3

在第一種情況即mCustomScrollbar將被執行之後AJAX請求是發送:記得,第一A在AJAX爲asynchronous。但它顯然沒有任何工作,因爲迴應從服務器尚未在這裏。

在第二個片段mCustomScrollbar控件創建發生後立即AJAX請求的迴應是收到(因爲這行是$.post成功處理程序的一部分了)#content-area充滿了必要的結構(與.html())調用。所以現在它工作正常。

您可以使用$.load方法可以提供自定義回調函數的事實,該函數將在請求完成時執行,如here所述。例如:

$("#content-area").load("abc.php", function() { 
    $(this).mCustomScrollbar({scrollButtons:{enable:true}}); 
}); 

$(this)用法:作爲this設爲又是回調函數內的每個DOM元素,你並不需要走在DOM尋找一個content-area再一次;只需將該元素封裝到jQuery對象就足夠了。

+0

啊,我知道這個關鍵字的目的。非常感謝...:) – Saurabh

0

我想,在第一實例的第二發言正在​​功能的完成之前執行。在第二種情況下,您正確使用了成功功能,該功能僅在完成POST請求後執行。

1

您需要使用它時,請求完成執行回調函數:

$("#content-area").load("abc.php", function(){ 
    $(this).mCustomScrollbar({scrollButtons:{enable:true}}); 
});