首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails with mmenu/sidr with Jquery and Turbolinks问题

Rails with mmenu/sidr with Jquery and Turbolinks问题
EN

Stack Overflow用户
提问于 2015-01-08 11:32:22
回答 7查看 768关注 0票数 3

我一直无法弄清楚这件事的真相,但有人怀疑turbolinks是罪魁祸首。更改菜单只是为了确保这不是什么奇怪的mmenu问题。

我打开页面,点击菜单按钮--它起作用了,它打开了侧边菜单,我点击菜单中的一个链接,它就会返回到我的应用程序。菜单按钮就不会再触发了。最初,当我使用mmenu时,它似乎缺少与mmenu相关的click事件。对于sidr,它似乎就在那里,但什么也没有发生。

我这样设置了我的jquery

Rails 4: how to use $(document).ready() with turbo-links

示例sidr

代码语言:javascript
复制
<a id="simple-menu" href="#sidr">Menu link</a>

<div id="sidr">
<ul>
<li><a href="#">List 1</a></li>
<li class="active"><a href="#">List 2</a></li>
<li><a href="#">List 3</a></li>
</ul>
</div> 

树中包含的JS文件

代码语言:javascript
复制
var ready;
ready = function() {

    $('#simple-menu').sidr();

};

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

我已经用jquery turbolinks gem设置了我的application.js。

代码语言:javascript
复制
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap-sprockets
//= require jquery-ui/core
//= require jquery-ui/autocomplete
//= require jquery.mmenu.min
//= require_tree .
//= require turbolinks

有什么建议吗?

EN

回答 7

Stack Overflow用户

发布于 2015-02-07 03:22:26

我对Mmenu和Turbolinks也有同样的问题。我已经按照evanbikes描述的那样做了。禁用turbolinks和Mmenu是有效的。但当启用它时,在菜单中单击一个链接后,它就不起作用了。其他一切都正常,我们所有的js-code。所以这一定和Turbolinks有关。

https://github.com/karlingen/rails4_mmenu

https://github.com/BeSite/jQuery.mmenu/issues/41

我很想使用Mmenu,但现在用Turbolinks是不可能的。

票数 2
EN

Stack Overflow用户

发布于 2015-04-26 03:48:35

尝尝这个。

安装'jquery-turbolinks‘https://github.com/kossnocorp/jquery.turbolinks

然后简单地

代码语言:javascript
复制
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require foundation

    // Make sure to add your code here
    // For example with foundation it is:


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

//= require turbolinks
//= require_tree .

希望能有所帮助。至少它对我来说没什么问题。

票数 1
EN

Stack Overflow用户

发布于 2015-01-13 11:18:12

以下是一些想法:

1)确保您的javascript包含在头部,而不是主体的底部。由于Turbolinks每次都会重新加载正文,因此您将重新加载相同的javascript,并可能重新初始化重复的侦听器。

2)使用jquery.turbolinks gem,您应该只需要$(ready),而不需要$(document).on('page:load', ready)。理论上,这就是jquery.turbolinks为您做的事情。

3) ready真的启动了吗?你在里面放了一个console.logalert来看吗?

4)在DOM准备好之后,您是否通过ajax或其他方式加载内容?如果是这样,您将需要在.sidr()实际出现在页面上时手动调用它,即使它在DOM就绪之后也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27832470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档