jQuery日本語リファレンス

jQuery does not mean Japanese Query...

Events/API/jQuery

live(type, fn)

jQuery 1.3より実装。
イベントに対してハンドラを登録します。
登録されたイベントは、現在および将来的にも、セレクタにマッチする全ての要素に適用されます。
カスタムイベントに対してbindすることも可能です。

この関数で指定できるイベントは、次の通りです:
click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup

現時点ではサポートしていないイベントは、次の通りです:
blur, focus, mouseenter, mouseleave, change, submit

bindとほぼ同様の関数ですが、ハンドラ登録時にマッチする要素だけでなく、永続的にイベント発生時点でマッチする要素に反応する点が異なります。
例えばli要素に対してclickイベントを登録した場合、bindであれば、その時点でページ上に存在するli要素に対してイベントが登録されるだけでした。しかしliveでは、その後で動的にli要素が追加された場合も、そのli要素でのクリックに対してハンドラが実行されます。

この関数は、既にプラグインとして広く使われているliveQueryと似た動きをしますが、いくつかの大きな違いがあります。
  • live関数がサポートするのは、イベントのうちの一部のみ(上記サポート/非サポートリスト参照)
  • liveQueryがしているような、イベントスタイルでないコールバック関数のサポートはしていない
  • live関数には、setupやcleanupといった手順が必要ない


liveで設定したイベントを削除するには、die関数を用います。
サンプル
サンプル1
p要素にclickイベントを、live bindする。そのクリックイベントで新たなp要素を作成するが、その新しい要素(live bind後に生成された)でも関数が機能することを確認する。
<p>ここをクリック!</p>
$("p").live("click", function(){
    $(this).after("<p>新たなp要素もクリック!</p>");
});
[全コードを表示] [実行結果を単体で表示]