以前jQueryで後から追加した要素でもイベントを発火させるために.live()
という機能を使用していましたが、1.7で非推奨になり.on()
で代用できるということで.live()
同様の使い方で使用していましたが、今まで使用方法を間違って覚えていました。
旧 live
$(selector).live("click", function () {
// 処理
});
勘違い on
$(selector).on("click", function () {
// 処理
});
これだとselectorにイベントは設定できるが後から追加された要素ではselectorが一致していてもイベントが発火しない。
正解 on
$(document).on("click", selector, function () {
// 処理
});
追記:documentだと全ての要素をクリックされたときに評価されるらしいので、可能てあればリフレッシュされない要素のなかで範囲を狭めた方がよさそうです。