2010-12-18 54 views
0

嗨 我有一個函數,一旦單擊元素就會發出ajax調用。我用這個代碼:將參數傳遞給jquery中的點擊函數觸發該函數而不點擊

$(document).ready(function() 
{ 
function ajax_call(offset, length) { 
$.ajax({method: "get", 
    url: "file.php", 
    data: "offset="+ offset, 

    success: function(returnedData) 
     {  
      $("#content").html(returnedData); 
     } 
}); 
} 

$("#profile").click(ajax_call(0, 1000)); 

}); 

的問題是這一行:

$("#profile").click(ajax_call(0, 1000));

當我將參數傳遞給ajax_call功能,該功能一旦頁面加載,無需任何用戶干預的運行,但當我刪除這樣的參數: $("#profile").click(ajax_call);該功能僅在單擊該元素時被調用。我已經研究了幾個小時關於這個問題,但沒有運氣

回答

1

這將立即調用函數ajax_call(0, 1000)並傳遞返回值作爲事件處理程序。

你必須包裝在一個匿名函數:

$("#profile").click(function() { 
    ajax_call(0, 1000); 
}); 

只要你有functionname()你實際上是調用功能。取而代之的是(無括號)functionname爲您提供了該函數的參考。因爲您不能只通過ajax_callclick,您必須將其包裝在另一個函數中。

所以匿名函數function(){...}作爲事件處理函數傳遞,當它被調用時,它會執行ajax_call(0, 1000)

+0

非常感謝您的解決方案和解釋。 – khr2003 2010-12-18 11:51:03