FullCalendarを使っていてコールバック関数内に設定した関数が何回も呼ばれてしまう問題

fullcalendarを使っていて挙動が変だったのでメモ。

こんなスクリプトを書いた。

dayClick: function(date) {
     $('#event #input-window .ok').click(function(){
           console.log('date='+date);
      });
}

カレンダーの日付のどこかをクリックしたら
関数A「(.ok)要素をクリックしたら日付を出す。」をセットする。
変数dateはクリックしたカレンダーの日付。

実行すると、
カレンダーのクリックごとに関数Aがセットされて、
5回、カレンダーをクリックして、(.ok)要素をクリックすると、一度に5回ログが出る。
(.ok)要素をクリックするたびに5回ログが出てしまう。

(.ok)要素をクリックした時はその直前にクリックしたカレンダーの日付が一回だけ出てほしいのに、どうしたらいい?

解決案

var global_date;

dayClick: function(date) {

   global_date = date;

}

$('#event #input-window .ok').click(function(){

         console.log('global_date='+global_date); 

});

カレンダーの日付のどこかをクリックしたら、グローバル変数にdateをセット。
(.ok)要素をクリックしたら、そのグローバル変数を参照するだけ。
以上。

fullcalendar関連の他の記事

fullcarender イベントの登録、更新、削除

コメント