-1

使用 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 毫无用处!

4

2 回答 2

0

据我了解,我建议使用jQuery-Turbolinks,这是您安装的一个 gem,可以让 JS 与 Turbolinks 一起使用

我们和你自己也有类似的问题,因为我们有

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

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

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

宝石文件:

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

//= require jquery
//= require jquery.turbolinks
//
// ... your other scripts here ...
//
//= require turbolinks
于 2013-11-04T08:52:06.373 回答
0

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

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

解释:ready是一个代表你定义的函数的变量。如果您调用它的名称ready,它将返回函数定义。如果调用它执行,则需要添加().

于 2013-11-04T08:54:46.520 回答