ンンンパ

ふとしです

移転しました

$(selector).on(eventType, handler) ではなく $(document).on(eventType, selector, handler) でイベント登録する。

たとえば bootstrap-button.js の初期化は以下のように行われている。

$(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
  //略
})

自分が知っているやりかたは以下のようだった。

$('[data-toggle^=button]').on('click.button.data-api' , function (e) {
  //略
})

なぜ $(document)?と思ったんだけど、$(selector).on だと $(selector) で element を 1 周、.on でさらに 1 周の合計 2 周が必要な一方で、$(document).on だと 1 周しながら登録できるから合計 1 周で済むからなんだな。

$('[data-toggle^=button]') を何度も参照しなければならない場合はかわってくるだろうけど、単にイベント一発登録して終わりなら $(document).on が良いのだろう。