LoginSignup
6
3

More than 5 years have passed since last update.

optionタグをクリックして発火させたい関数があるときeventバインディングを使う(KnockoutJSを用いて)

Posted at

割とよくやってしまう(いや結構少ないかもだけど・・・)と思われるポカをやってしまったので忘れないうちにメモ。

selectタグ中のoptionタグをクリックしたら実行される関数をknockoutでバインディングしたいと思ったら、eventバインディングを使う。

ok.html
<select data-bind="event : $root.hoge">
    <option>hoge</option>
    <option>fuga</option>
</select>

間違っても以下のようにしてはいけない。

bad.html
<select>
    <option data-bind="click : $root.hoge">hoge</option>
    <option data-bind="click : $root.hoge">fuga</option>
</select>

これでも実はちゃんと動くブラウザがある。IEとfirefoxは動いてしまう。ところがChromeでは動かないのである。
どうやらChromeはoptionタグにclickイベントを付けられないようだ(ちゃんと調べてないけど上のが動かなかったから少なくとも何か邪魔をしてくれるのだろう)。

ので、eventバインディングを使って発火させるようにしましょう。同じ関数名を書かない分こちらの方がスマートで良いとも思われます。

:blush:

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3