coffeescriptでファットアローとthisの両方使いたいとき
こんな感じのときの話。
<li class="someArea"><button><i class="icon-trash"></i></button></li>
$someArea.on("click", (evt) => @obj.trigger("triggerOnClick", $(this)))
ここで俺っちが$(this)に入っててほしいのはliなんだけど、この場合は当然this=@ですから目的は果たせない。
ファットアローじゃないと@objにアクセスできないし、thisも使いたいしどうしよう困ったでも使えないからevtから辿るしかないよねと思ってtargetにしてみた。
$someArea.on("click", (evt) => @obj.trigger("triggerOnClick", $(evt.target)))
そうすると、今度はクリックのしどころによって入ってくるものが変わってしまう。
つまり、button部分がクリックされるとbuttonが返るし、i部分をクリックされるとiが返る。
buttonの外がわの絶妙なところをクリックすればliが返るけど、当然そんなもんダメである。
で、どうしたらいいかというとcurrentTargetを使う。するとliが採れる。
$someArea.on("click", (evt) => @obj.trigger("triggerOnClick", $(evt.currentTarget)))
この時間にハマるとキツイわ−。
Web制作の現場で使うjQueryデザイン入門[改訂新版] (Web Professional Books)
- 作者: 西畑一馬
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2013/03/07
- メディア: 大型本
- クリック: 4回
- この商品を含むブログ (7件) を見る