JavaScriptでは発生したイベントに応じてthisの値が変わるはずですが、何故か変わらなかったのでメモです。
次のコードを書いたところ、thisがwindowのままでした。
@jQuery
$('#hoge').click((e) => {
console.log($(this));
});
=> [Window]
原因
コールバック関数にアロー関数 (Arrow Function)を使っていることが原因でした。アロー関数ではthisの値が更新されないようです。
通常の無名関数にすれば正常に動作します。
$('#click').click(function (e) {
console.log($(this));
});
=> [p#click]
もしくはイベントの引数を使って、イベントが発生したターゲットを参照しても動作するようです。
$('#click').click((e) => {
console.log($(e.currentTarget));
});
=> [p#click]
以上