2015-08-14 75 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

如果您將控制檯消息添加到就緒功能中,它會顯示嗎? –