【发布时间】:2017-10-30 00:56:37
【问题描述】:
在 Ruby on Rails 中加载 Javascript 文件(包括 jQuery)时遇到问题。
$(document).ready(main);
var contador = 1;
function main(){
$('.menu_bar').click(function(){
if(contador == 1){
$('nav').animate({
left: '0'
});
contador = 0;
} else {
contador = 1;
$('nav').animate({
left: '-100%'
});
}
});
};
正确的 html.erb 如下所示:
<header>
<div class="menu_bar">
<a href="#" class="bt-menu"><span class="fa fa-bars"></span>Brand</a>
</div>
<nav>
<ul>
<li><%= link_to "Link 1", '#'%></li>
<li><%= link_to "Link 2", '#'%></li>
<li><%= link_to "Link 3", '#'%></li>
</ul>
</nav>
</header>
正确的 application.js 包括:
//= require rails-ujs
//= require turbolinks
//= require jquery
//= require jquery_ujs
//= require_tree .
jquery 来自 Gemfile 中的 gem 'jquery-rails'。
点击后动画未加载。我正在使用 Rails 5,我猜这个问题是由 Turbolinks 发出的。
为了解决这个问题,我需要做些什么改变?
【问题讨论】:
-
如果您认为问题是 turbolinks,请尝试使用
$('.menu_bar').on('click', function() { ...而不是$('.menu_bar').click(function(){ ...。您是否在控制台中遇到任何错误? -
感谢您的回答。它没有解决它,我在控制台中没有错误。
-
如果您在控制台中没有收到任何错误,则 jQuery 正在加载(否则您会看到类似“ready is undefined”的内容)。错误可能是您的代码中的其他内容(可能在您的 CSS 中) - 代码本身似乎可以工作:jsfiddle.net/jzghgzot 可能尝试在
main()中添加$('nav').css('position', 'relative');。 (您也可以尝试分享更多信息,例如 HTML、JS 和 CSS) -
我尝试添加
$('nav').css('position', 'relative');,但它不起作用。 html.erb 在描述中被编辑。 CSS 工作正常:jsfiddle.net/wy6fxoaj. -
在你的主函数中添加
console.log('abc'),看看它是否被正确调用,如果当时不工作,试试$(document).ready(main); $(document).on('turbolinks:load', main);到你的javascript文件
标签: javascript jquery ruby-on-rails turbolinks