質問: monacaで初のアプリ習作を作っています。 16x20程度のテーブルを作り、セルをタップしたらフォーカスを移すという機能を実装しようとしている最中で、急に思った通りの動作をしてくれなくなってしまいました。 具体的にいうと、indexが-1のtd要素からクリックイベントが呼ばれたきり、それ以降クリックに反応しなくなってしまいます。 あれ・・・さっきまで動いてたのにナンデ・・・。 いろいろ試しているのですが行き詰っています。どなたか解決策ご存じありませんか? ``` function cellClick(){ console.log("clicked"+$("td").index(this)+"/"+$("td").length); //ここで"clicked-1/352"のログが出て、それ以降クリックに反応しなくなる。 $(".focus").removeClass("focus"); $(this).addClass("focus"); } $(function(){ console.log("load complete."); showTable();//テーブルを構築して表示 $("td").click(cellClick()); }); ```
回答: $("td").click(cellClick()); は間違いでは? jQuery.click() の引数は function ですので、cellClickという関数がfunctionを返すのであれば意味は通りますが、cellClick自体をクリックイベントのコールバック関数として登録するのであれば、 $("td").click(cellClick); とする必要がありますよね。 "clicked-1/352"のログが吐き出されたのは、$("td").click(cellClick());を実行した時に cellClick関数が呼ばれたため、と思います。