$(document).ready(function(){Rails Turbo-links

时间:2013-11-04 08:31:08

标签: javascript jquery ruby-on-rails turbolinks

使用turbo-links运行此问题...

$(document).ready(function() {
 var n = '#nav', no = 'nav-open';
  $('#nav-menu').click(function() {
    if ($(n).hasClass(no)) {
        $(n).animate({height:0},300);
        setTimeout(function(){
            $(n).removeClass(no).removeAttr('style');
        },320);
    }
    else {
        var newH = $(n).css('height','auto').height()
            ;
        $(n).height(0).animate({height:newH},300);
        setTimeout(function(){
            $(n).addClass(no).removeAttr('style');
        },320);
    }
 });
});

我没试过就试过这个:

var ready;
ready = function() {

 ...your javascript goes here...

};

$(document).ready(ready);
$(document).on('page:load', ready);

抱歉,我对Javascript毫无用处!

2 个答案:

答案 0 :(得分:0)

根据我的理解,我建议使用jQuery-Turbolinks,这是你安装的一个宝石,以使JS与Turbolinks一起工作

我们遇到了类似的问题,因为我们有

$(document).ready(function() {});

并且它不会触发 - 它是由Turbolinks加载文档一次引起的,然后欺骗JS认为它没有重新加载

我会尝试安装gem&看它是否有效:

的Gemfile:

gem 'jquery-turbolinks'
Add it to your JavaScript manifest file, in this order:

//= require jquery
//= require jquery.turbolinks
//
// ... your other scripts here ...
//
//= require turbolinks

答案 1 :(得分:0)

在最后两行添加(),要求他们执行

$(document).ready(ready());
$(document).on('page:load', ready());

说明:ready是表示由您定义的函数的变量。如果您将其名称ready调用,它将返回函数定义。如果您将其命名为执行,则需要添加()