くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

ES6のアロー関数を使うとjqueryのon()でthisが効かない

例えばselectボックスが変更された時点でその値を取って何かしたい場合
以下のように書くとエラーになります。

$(document).on("change", ".hoge", (() => {
        // this が undefined
        console.log(this.value);
}

これはES6の新仕様ではthisが呼び出し元拘束されているため(?)です。

上記を今までのイメージ通りどうささせるには

$(document).on("change", ".hoge", (event => {
        console.log(event.currentTarget.value);
}

のようにちゃんと第一引数のeventからcurrentTargetを使用する必要があるみたい。

参照
shirusu-ni-tarazu.hatenablog.jp