裏紙に書く程度の内容

jQuery delegate と on と live の違い

jQueryでクリック時等のイベントを設定する方法はいくつかあります。

ajax等で動的に追加される要素に対してイベント設定する場合は.delegate().live().on()のいづれかを使うと思いますが、結局どれを使うのがいいのかっていう検討。

.delegate()

version 1.4.2 ~

Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.

現在または将来的にセレクタに一致するすべての要素にイベントを設定します。

.live()

version 1.7 ~ 1.9

Attach an event handler for all elements which match the current selector, now and in the future.

現在と将来的にセレクタに一致するすべての要素にイベントを設定します。

.on()

version 1.7 ~

Attach an event handler function for one or more events to the selected elements.

選択した要素にイベントを設定します。

この中では.delegate()が一番古くからあります。

.live().on()はどちらも1.7から追加されたようですが、.live()の方は1.9でremovedになっています。

.delegate()も非推奨とは書いていないけど.on()で同じことが出来るので、そのうち使えなくなるかもしれませんね。

というわけで、イベントの設定には.on()を使うのが無難そうです。

https://api.jquery.com/on/

私は勉強し始めたときに見たサイトで.delegate()を使う方法が紹介されていたので、そのままずーっと.delegate()使っちゃってました。。。なおすのめんどくさっっっ!!!

Index