2015-08-14 29 views
0

我有一个应用程序,其中我使用了很多不显眼的javascript将轨道部分添加到我的页面。Rails 4 - JavaScript无法工作,除非它把脚本标记放在页面上

我遇到的麻烦是这样的:如果放置在资产目录不会工作的JavaScript。

在Chrome开发工具中,我可以看到它的加载,但没有任何反应。在我的Coffeescript文件中,我使用了DOM准备替代方法找到here的涡轮链接。但是这没有效果。

奇怪的是:如果我将脚本放在加载的部分的脚本标记内,那么它就可以工作。

例如:如果包含选项卡的部分在加载javascript后加载,则此coffeescript文件将不会运行。

var ready; 
ready = function() { 

    $('tab').click -> 
     $('.tab').removeClass("active"); 
     $(this).addClass("active"); 
     panel = $(this).attr("data-panel") 
     $('.panel').hide(); 
     $('#' + panel).show(); 

}; 

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

尽管此脚本放置在页面的底部并且具有选项卡,但它仍可行。

<script> 
     $('.tab').click(function() { 
      $('.tab').removeClass("active"); 
      $(this).addClass("active"); 
      var panel = $(this).attr("data-panel") 
      $('.panel').hide(); 
      $('#' + panel).show(); 
     }); 
</script> 

我的问题是这样的:首先为什么会发生这种情况?其次,有没有办法解决这个问题?

回答

0

你错过了。从$(.tab).click监听器。

+0

感谢您指出我的错误。但是,即使我将脚本标记JS放在JS文件中并通过资产管道加载,也可以应用相同的结果。 – greyoxide

+0

你为什么要调用$(document).ready(ready)和 $(document).on('page:load',ready)?你可能会两次触发听众。 –

+0

如果您将控制台消息添加到就绪功能中,它会显示吗? –

相关问题