Javascript $(文档).ready(函数(){Rails Turbo links

Javascript $(文档).ready(函数(){Rails Turbo links,javascript,jquery,ruby-on-rails,turbolinks,Javascript,Jquery,Ruby On Rails,Turbolinks,在使用turbo Link运行时遇到问题 $(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(n

在使用turbo Link运行时遇到问题

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

据我所知,我建议使用,这是一个让JS与TurboLink一起工作的宝石

我们和你有一个类似的问题,那就是

$(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
在最后两行中添加
()
,要求他们执行

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

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

为什么这对你不起作用?你检查过控制台的错误吗?你的代码在@max工作,问题不在于代码不起作用-这是因为TurboLinks,它基本上保持了加载状态,即使你进入不同的页面;混淆了JSjquery。TurboLinks不应该用于新代码-它是一个使用新的turbolinks框架生成现有的遗留代码。然后,您应该围绕turbolinks编写新代码,而不是使用此黑客。好的,谢谢!下次我会记住这一点。不过,我已经提供了我的修复程序,我觉得这将有助于直接解决OP的问题。我尝试了此操作,但没有任何运气:
varready;ready=function(){var n='#nav',no='nav open';$('#nav menu')。单击(function(){if($(n).hasClass(no)){$(n).动画({height:0},300);设置超时(function(){$(n).removeClass(no).removeAttr('style');},320);}其他{var newH=$(n).css('height','auto height();$(n).height(0).动画({height:newH},300);setTimeout(function(){$(n).addClass(no).removeAttr('style');},320);}};$(document).ready(ready());$(document).on('page:load',ready())
@owenob1,我用了Max的小提琴,并根据新结构进行了修改。它在jQuery的就绪状态下工作。请不要说这在带有TurboLink的Rails中不起作用,它只是在您的特定项目中不起作用。我有类似的方法很好地工作。此外,请不要说它不起作用,这里没有人可以访问您的项目,也不能进行数据挖掘对于你们来说,轮到你们在遇到问题时提供具体的错误信息了。