Javascript jQuery仅在本地Rails项目上的浏览器刷新后工作

Javascript jQuery仅在本地Rails项目上的浏览器刷新后工作,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我有这两个jQuery函数,如果我刷新浏览器窗口,它们工作得很好。。。但是,如果我只是在站点中单击,下面的jQuery不会执行。我没有收到任何控制台错误。我尝试过在$(窗口)中包装它。在('load',function(){…}和$(function(){…}上。我也尝试过这样分别包装:$(“.accordion”)。在('load',function(){…}上 任何想法都将受到赞赏,因为这是我在Rails生态系统中的第一个项目 // grow hover for landing page

我有这两个jQuery函数,如果我刷新浏览器窗口,它们工作得很好。。。但是,如果我只是在站点中单击,下面的jQuery不会执行。我没有收到任何控制台错误。我尝试过在
$(窗口)中包装它。在('load',function(){…}
$(function(){…}
上。我也尝试过这样分别包装:
$(“.accordion”)。在('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";
        }
    }
}
//将鼠标悬停在登录页上
$(窗口)。绑定(“调整大小”,函数(){
log($(this.width());

如果($(this).width()您的项目可能正在使用,您可以通过在Gemfile中查找
turbolinks
或检查app/assets/javascripts/application.js以查看
/=require turbolinks
。turbolinks所做的是:

当您跟随链接时,TurboLink会自动获取页面,交换其
,并合并其
,所有这些都不会产生整个页面加载的成本

正因为如此,您只需实际加载页面一次,然后TurboLink就会接管并从那时起伪加载页面。在自述部分:

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

在许多情况下,您可以简单地调整代码以侦听
turbolinks:load
事件,该事件在初始页面加载时触发一次,在每次turbolinks访问后再次触发

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

您可以从中了解更多信息,您的项目可能正在使用,您可以通过在Gemfile中查找
turbolinks
或检查app/assets/javascripts/application.js中的
/=require turbolinks
来检查这一点。turbolinks所做的是:

当您跟随链接时,TurboLink会自动获取页面,交换其
,并合并其
,所有这些都不会产生整个页面加载的成本

正因为如此,您只需实际加载页面一次,然后TurboLink就会接管并从那时起伪加载页面。在自述部分:

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

在许多情况下,您可以简单地调整代码以侦听
turbolinks:load
事件,该事件在初始页面加载时触发一次,在每次turbolinks访问后再次触发

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

您可以在

中了解更多关于它的信息,您正在使用它吗?我相信它在默认情况下是启用的,但自从我开始使用新的project@SimpleLime我不确定,因为我是该项目的前端开发人员,所以Rails项目本身是由后端开发人员启动的。有没有一种简单的方法让我检查一下?你在使用吗?我相信它已经启用了默认情况下,但我已经有一段时间没有开始新的工作了project@SimpleLime我不确定,因为我是该项目的前端开发人员,所以Rails项目本身是由后端开发人员启动的。有没有简单的方法让我检查一下?谢谢,@simpletime!这就是问题所在。正如您所建议的,
/=require turbolinks
就在application.js文件——添加事件列表器非常有效。我非常感谢。谢谢你,@simpletime!这就是问题所在。正如你所建议的,
/=require turbolinks
就在application.js文件中——添加事件列表器非常有效。我非常感谢。