Rails Coffeescript在页面加载时没有正确执行

时间:2014-11-06 22:37:29

标签: ruby-on-rails coffeescript turbolinks

我有一个导航栏菜单,以传统的水平导航栏格式显示。对于小屏幕尺寸,我想使用coffeescript删除带链接的nav元素,并将其附加到通过点击汉堡包链接激活的下拉菜单。

我遇到的麻烦是上述行为并不总是只执行约30%的时间。这让我想知道它的Turbolinks还是我对coffeescript的深刻无趣感?代码如下。我这样做了吗?

(。small)是我的CSS类隐藏在大于768的媒体查询

ready = ->  

    $( window ).resize(menuAdjust)


    $('.hamburger').click ->
        $('#hidden').toggle(  )


menuAdjust = ->
 if ($(".small").css("display") == "block")
     $('#menu').appendTo('#hidden');
 else
     $('#menu').appendTo('#main')

$(document).ready(ready)
$(document).ready(menuAdjust)
$(document).on('page:load', ready)

1 个答案:

答案 0 :(得分:1)

当用户调整浏览器窗口大小时,您的CoffeeScript代码才会触发menuAdjust,因为您只注册了menuAdjust ready()回调,而不是'page:load'事件。例如,menuAdjust仅在整页刷新时触发,而不是Turbolinks页面加载。注册menuAdjust也可以在Turbolinks页面加载事件上执行:

$(document).on('page:load', menuAdjust)

您也可以暂时disable Turbolinks确定这是问题的原因。