jQuery でイベントが拾えなくなっちゃった

ボタンを押したらボタンを増やす。そのボタンをまた押すとボタンが増える。

という動きを live 関数を使っていたのだが、全然イベントを拾ってくれなくなってしまった。凝ったことはしていないのに何故だろう・・・と思っていたら、jQuery のバージョンを上げていたことが原因でした。

jQuery 1.9 のアップグレードガイドを見てみると、live関数は削除したよーん。と書かれているではないか!

http://jquery.com/upgrade-guide/1.9/#live-removed

jQuery 1.9 では live 関数は削除され、代わりに on 関数を使えば良いらしい。使い方は、live はイベントを監視したいセレクタに対して live しておけば良かったところが、document に対して監視する形に変更される。

(旧)$(“a.foo”).live(“click”, fn);

(新)$(document).on(“click”, “a.foo”, fn);

因みにイベントバインドを解除するには、今まで die を使っていたところ、off にすればOK。こんなよく使う関数名が変わってしまうこともあるなんてビックリした一件でした。

動的にフォームを増減させるようなページでは、bind だけではイベントを拾いきれないので on 関数は必須。メモメモ・・・っと。