繁体   English   中英

将javascript移至素材资源文件夹

[英]moving javascript into assets folder

我试图将我的javascipt从其工作所在的视图页面移至asset / javascripts文件。 但是,当我采取行动时,javascript将不再执行。 我不确定为什么吗?

 $('.dropbtn').click(function(){ if($(this).hasClass("active") ) { $(this).parent(".dropdown").find('.dropdown-content').removeClass('show'); $(this).removeClass('active'); } else{ $('.dropdown-content').removeClass('show'); $(this).parent(".dropdown").find('.dropdown-content').addClass('show'); $(this).addClass('active'); } }); 

如果您的Javascript文件包含在资产管道中,它将被串联,缩小并预处理为一个大的.js文件,默认情况下,该文件包含在布局的<head> 到浏览器阅读此文件时,尚未加载与.dropbtn类关联的dom元素,因此从未添加click事件侦听器。

解决方案是将代码包装在一个函数中,该函数在文档加载后即被调用:

$(document).ready(function(){
  // your code goes here.
});

但是,如果您使用的是turbolinks(默认情况下在rails中包含),则需要使用:

$(document).on('turbolinks:load', function(){
  // your code goes here.
});

这样做的原因是,一旦加载了文档,turbolinks就会对其进行更新,而不是在每次请求后重新加载它,因此$(document).ready()仅会在'turbolinks:load'每次加载内容时触发一次。通过您应用中的turbolink。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM