代码之家  ›  专栏  ›  技术社区  ›  aronmoshe_m

只有在本地Rails项目上刷新浏览器后,jQuery才能工作

  •  0
  • aronmoshe_m  · 技术社区  · 9 年前

    我有这两个jQuery函数,如果我刷新浏览器窗口,它们工作得很好。。。但是,如果我只是点击这个站点,下面的jQuery就不会执行。我没有收到任何控制台错误。我试过用两种包装 $(window).on('load', function() { ... } $(function(){ ... } $( ".accordion" ).on('load', function() { ... } .

    任何想法都将不胜感激,因为这是我在Rails生态系统中的第一个项目。

    // grow hover for landing page 
    $(window).bind("resize",function(){
        console.log($(this).width());
        if($(this).width() <1024){
            $('div.causeBox').addClass('grow')
        }
        else{
            $('div.causeBox').removeClass('grow')
        }
    })
    
    // accordion animation
    var acc = document.getElementsByClassName("accordion");
    var i;
    
    for (i = 0; i < acc.length; i++) {
        acc[i].onclick = function() {
            this.classList.toggle("active");
            var panel = this.nextElementSibling;
            if (panel.style.maxHeight){
                panel.style.maxHeight = null;
            } else {
                panel.style.maxHeight = panel.scrollHeight + "px";
            }
        }
    }
    

    1 回复  |  直到 9 年前
        1
  •  3
  •   Simple Lime    9 年前

    您的项目可能正在使用 Turbolinks turbolinks Gemfile公司 或检查 对于 //= require turbolinks

    当你关注一个链接时,Turbolinks会自动获取页面,交换其内容 <body> <head>

    正因为如此,您实际上只加载了一次页面,然后Turbolinks接管并从那时起伪加载页面。在 Running JavaScript When a Page Loads

    您可能习惯于安装JavaScript行为以响应 window.onload , DOMContentLoaded ,或jQuery ready 事件。对于Turbolinks,这些事件将仅在响应初始页面加载时触发,而不是在任何后续页面更改后触发。

    turbolinks:load

    document.addEventListener("turbolinks:load", function() {
      // ...
    })
    

    你可以从中了解更多 README