我有一个Javascript,我的Rails应用中uses on ready state
。
它实际上应该对链接点击作出反应,所以它是
<%= javascript_tag "$(document).ready(function(){$('#save').click(save);});"%>
但是在渲染视图时,通过从另一个视图到达那里,它不起作用。只有当我使用f5
重新加载网站时,它才有效。
你知道为什么会这样吗?
我已将alert('it works');
添加到$(document).ready(function(){};
,但它尚未生效。因此,文档就绪事件未被触发。
@ BroiSatse:是的,我安装了turbolinks。以下是我的application.js中的需求部分:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require_tree .
答案 0 :(得分:0)
尝试将其定义为
$(function(){ console.log("ready fired");$.("link"();));
检查文档就绪事件是否被触发
如果不是,您将需要找到触发并绑定功能的事件。
答案 1 :(得分:0)
如果我理解你的问题,这样的事情就足够了。评论我是否不理解问题。
$(document).ready(funtion(){
$(document).on('click touchstart', '#save', function(){
save();
});
function save(){
console.log('This Works');
}
});
答案 2 :(得分:0)
这似乎是由turbolinks gem引起的典型问题。此gem通过不加载每个请求的整个页面来提高网站性能。显而易见的问题是,加载新页面时不会触发$(document).ready
。要解决此问题,您可以将通话更改为:
<%= javascript_tag "$(document).on('page:load', function(){$('#save').click(save);});
然而,我发现处理它的最好方法是安装jquery-turbolinks
gem。只需添加
gem 'jquery-turbolinks'
到您的gemfile,运行bundle install
并修改您的application.js文件,看起来像:
//= require jquery
//= require jquery.turbolinks
// ...
//= require turbolinks