2010-12-18 3 views
0

こんにちは 要素をクリックするとajax呼び出しを行う関数があります。私はこのコードを使用します。jqueryのclick関数に引数を渡すと、関数はクリックせずに起動します

$(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)); 

}); 

問題は、この行を次のとおりです。しかし、私はajax_call関数に引数を渡すとき

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

は、関数は、ユーザーの介入なしに、ページのロード後に実行されますこのような引数を取り除くと、 $("#profile").click(ajax_call);という要素がクリックされたときにのみ関数が呼び出されます。私はこの問題について何時間も調査しましたが、運がありません

答えて

1

これは即座にajax_call(0, 1000)という関数を呼び出し、戻り値をイベントハンドラとして渡します。

あなたは匿名関数でラップする必要があります:あなたはfunctionname()があるとき

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

あなたは関数を呼び出し、実際です。代わりにfunctionname(かっこなし)を使用すると、関数への参照が得られます。 ajax_callclickに渡すことはできませんので、別の関数でラップする必要があります。

匿名関数function(){...}がイベントハンドラとして渡され、呼び出されると、ajax_call(0, 1000)が実行されます。

+0

ありがとうございました。 – khr2003

関連する問題