我将 javascript 嵌入到使用 Turbolinks 的 Rails 视图中,例如:
ViewX.html.haml:
.blah
Blah
:javascript
$(function() {
$(".blah").offset().top;
});
加载 ViewX 时一切正常。但是当我导航到查看 YI 时,控制台中出现以下错误:
Uncaught TypeError: Cannot read property 'top' of undefined
当我导航到其他视图时,该错误仍然存在。它在执行硬刷新时消失,但在我下次渲染 ViewX 时返回。
我的问题是如何让一些 JS 片段仅针对特定视图呈现而不污染应用程序的其余部分?
编辑
好的,我想出了一个方法,这有点像 hack,但包含 hack。将 ViewX.html.haml 更改为:
ViewX.html.haml:
.blah
Blah
%script{:type => "text/javascript", 'data-turbolinks-eval' => 'false'}
:plain
$(function() {
$(".blah").offset().top;
});