読者です 読者をやめる 読者になる 読者になる

spring of life

技術、ときどき日常のブログ(予定)

$(document).ready が実行されない件

タイトルの通り、RailsでTurbolinksとかいれてるとリロードしても$(document).readyの中の処理が実行されなくてちょっと困ってた

$(document).readyの中で関数を定期実行させる処理と、その関数を最初に1度実行させる処理を書いてたんだけど、リロードしても定期実行によって一定時間後にしか呼ばれてないみたいだったのでおかしいな〜という感じになっててどうにかしたかった

$(document).ready ->
  setInterval(
    () ->
      hoge();
  , 10 * 1000);
  hoge()
  return
  • 実際はRailsだからCoffeeScript(あんま上手く書けてる自信無いけど笑)
  • 後で分かったが、これは偶然上手く動いてただけ
    • Turbolinks入ってなかったら$(document).readyが何回も呼ばれて何回も定期実行するようになってる

てことでリロードとかするたびに実行されるにはpage:changeというのを入れたらいいらしい

$(document).ready ->
  setInterval(
    () ->
      hoge();
  , 10 * 1000);
  return

$(document).on 'page:change', ->
  hoge()
  return
  • page:changeのところはonを使ってる
  • $(document).readyで最初の1回だけ定期実行が動くようにreadypage:changeを分けている

これでまぁ上手く動いたかなぁとは思ってるんだけど、実際のところは不安。。。

$(document).readyが2回実行される時が普通にありそうな気がする

Turbolinksのことあんまりよく分かってないからなんとも言えないなぁ