JavaScript在我加载另一个页面后停止工作

JavaScript在我加载另一个页面后停止工作,javascript,html,ruby,Javascript,Html,Ruby,我是JavaScript新手,正在尝试了解我的事件侦听器为什么不能工作。我在stackoverflow上也发现了类似的帖子,但是这些解决方案对我不起作用 var search = function( event ) { alert("bobo") $.get("http://localhost:3000/search", {"search" : $("#Search-Bar").val()}, function(data, status){ if(status ==

我是JavaScript新手,正在尝试了解我的事件侦听器为什么不能工作。我在stackoverflow上也发现了类似的帖子,但是这些解决方案对我不起作用

var search = function( event ) {
    alert("bobo")
   $.get("http://localhost:3000/search", {"search" : $("#Search-Bar").val()}, function(data, status){
        if(status == "success")
           $(".centering.text-center").html(data)
    })
}

var attachListeners = function(){
    $("#Search").on("click", search)
    $("#SearchIcon").click( () => search() )
    $("#Search-Bar").keypress( event => (event.KeyCode == 13 || event.which == 13) ? search() : undefined )
}

$(document).ready( function(){ 
    attachListeners()
})
我的网站不是一个单页应用程序。我已将侦听器附加到导航搜索栏,在那里我通过导航链接加载不同的视图,我的服务器(ruby后端)上载新的html页面


在第一次加载时,我注意到documentready被调用,其他一切都正常工作。打开菜单并单击。使用导航并加载不同的html页面后,我的事件将消失。在我的html视图中,我的搜索栏、搜索图标和搜索文本具有一致的
id
。我尝试过使用
window.load()
并为我的身体
设置一个onload属性,但都不起作用(也许我没有正确使用它们)。我还注意到,当我呈现下一个html视图时,不会调用我的
document.ready
。但是,如果我使用F5强制刷新页面,则该html页面的侦听器将再次处于活动状态。我在这里遗漏了什么我不明白的地方?

从项目自述文件来看,您可能正在使用:

当您跟踪某个链接时,Turbolinks会自动获取页面、交换its并合并its,而无需承担整个页面加载的成本

由于此库使页面仅加载一次,因此在初始页面加载后,普通javascript
window.onload
domcontentload
、jQuery
ready
事件不起作用,您必须使用

document.addEventListener("turbolinks:load", function() {
而不是那些。如果你是新的涡轮链接,我建议通过阅读自述看看它的一切


我一直不明白为什么Rails团队会在Rails中放置这样的东西,并在默认情况下启用它,而在我做的每一个项目中,自从他们做出更改后,我做的第一件事就是卸载它,而当我忘记这么做时,我花了几个小时在这个项目中,想知道为什么我的javascript会被破坏。

只是想弄清楚-你在每一页上都有这个吗?
page1.html
上的javascript不会在
page2.html
上运行-所有事件监听器都消失了!当我浏览我的chrome工具和资产时,javascript文件就在那里。如果我在ready或我的搜索函数nothing上设置断点,则断点不起作用。html源代码包括我的javascript文件,其中包含此代码。javascript函数是单独加载的(通过每个页面上的标记)还是在每个html页面中编码的?它会加载到脚本标记中。