每当一条路由在rails中被执行时执行javascript
问题描述:
当我的页面第一次加载/assets/javascript/home.js中的代码时,它会使用Bootstraps粘贴来定位我的导航栏。每当一条路由在rails中被执行时执行javascript
$('.navbar').affix({
offset: {
top: function() {
return this.bottom = $('.hero').outerHeight(true);
}
}
});
当我去另一条路线如/blog
,我不希望这个代码来执行,并希望我的静态CSS来呈现它的伟大工程。问题是当我回到家乡路线(/
)时,JavaScript不会再执行,而我的导航栏正在使用其自然CSS。如果我在这一点刷新,页面将完全重新加载,并且我的导航栏将被正确定位。
我认为问题是因为turbo链接,但我没有足够的经验足以解决这个问题。希望有人能够点亮一些光芒!
答
如果您使用turbolinks,你可以做这样的事情:
$(function() {
if (window.location.pathname === '/') {
// run your code
}
});
Turbolinks改变$(FN)(这是一个快捷方式$(文件)。就绪)更改为后运行其他路径,所以它会在每个路径更改上运行此代码。从这个堆栈溢出后
找到解决方案 http://*.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links – Luca