not good but great

プログラミング、アート、映画・本の感想について書きます。

jqueryでclick()のコールバック関数に引数(データ)を渡す方法

demo


無名関数を英語にしたら「no name function」だと思っていたが、何だか気持ち悪かったので調べてみると「nameless function」だった。

匿名関数(anonymous function)って呼び方もある。
404 Blog Not Found:jargon - 無名関数(nameless function)?匿名関数(anonymous function)?

どうでもいいけどjsfiddleでRunさせるためのショートカットキーは「Ctrl+Return」。Returnキーってなんだっけと思ったEnterキーのことだった件。
Enterキーとは 「Returnキー」 (Return key) (Enter key): - IT用語辞典バイナリ

無名関数で実行

<p id='nameless'>nameless function</p>
$("#nameless").click(function(){
  //実行される
  console.log("nameless");
});

これはclick()の第一引数に無名関数を記入すればよい。

外部関数の呼び出し

<p id='name'>name function</p>
function name(){
    console.log("name");
}

$("#name").click(name);

click()の第一引数に関数名だけを渡せばよい。

click()のコールバック関数の中に引数を書くことはできない

<p id='test'>test</p>
function badSample(t){
    console.log("badSample:" + t);
}

$("#test").click(badSample(100));

関数を外部に書いたとき、引数を渡すときを考える。素直に引数を書くと、クリックしていないのに読み込み時に「100」が表示された。

click()のコールバック関数に引数を渡す方法

bindを使う

<p id='bind'>bind</p>
function bindSample(event){
    //100
    console.log(event.data.num);
}

$("#bind").bind("click",{num : 100},bindSample);

第二引数には渡すデータを連想配列で渡す。これでコールバック先にデータを渡すことができる。

click()の引数を2つにわける

jQuery1.4.3以降だけで使えるみたい。
jQueryのbindについて | PRESSMAN*Tech

<p id='click'>click</p>
function clickSample(event){
    //clickSample:100
    console.log("clickSample:" + event.data.num);
}

$("#click").click({num : 100},clickSample);

click(data,fn)の形で書けばイケる。