jQueryでclickイベントにbindしたら、クリックしてないのに勝手に動き出した件

表題の件、検索しても出てこなかったので。
まずはコードを。

[ HTML ]

<p class='sample'>ここをクリック</p>
<p class='display'></p>


[ javaScript ]

$("p.sample").bind('click',hello('ja'));
function hello(lan){
if(lan=='ja'){
var greet = 'こんにちは';
}else if(lan=='en'){
var greet = 'Hello!'
}else if(lan=='cn'){
var greet = '你好';
}else{
var greet = '○△■×';
}
$("p.display").text(greet);
}

ここをクリックっていうテキストをクリックすると「こんにちは」って表示されるのを意図していたんだが、なんかもう既に表示されている。bindのコールバックに引数を付ける必要があったのだが、引数をつけてやるとclickされる前に発動してしまうらしい。

で、正解はこっち。

$("p.sample").bind('click','ja',hello);

function hello(lan){
if(lan.data=='ja'){
var greet = 'こんにちは';
}else if(lan.data=='en'){
var greet = 'Hello!'
}else if(lan.data=='cn'){
var greet = '你好';
}else{
var greet = '○△■×';
}
$("p.display").text(greet);
}

コールバックする関数名は第三引数に、その関数に渡す引数はbindの第二引数に渡す。u呼び出した関数内では、渡した引数はオブジェクトとして渡っているので注意。