为什么我的Javascript在呈现视图时不起作用?

时间:2014-04-16 10:47:22

标签: javascript jquery ruby-on-rails ruby

我有一个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 .

3 个答案:

答案 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