2014-04-16 63 views
0

我有一個Javascript,其中uses on ready state在我的Rails應用程序。 它實際上應該做出反應鏈接的點擊,所以它的爲什麼我的Javascript在視圖呈現時不工作?

<%= javascript_tag "$(document).ready(function(){$('#save').click(save);});"%> 

但渲染視圖時,從另一種觀點認爲到達那裏,這是行不通的。它只在我使用f5重新加載站點時起作用。

你知道這是爲什麼嗎?


編輯:

我已經加入alert('it works');$(document).ready(function(){};,但它並沒有正常工作。所以文件準備好的事件並沒有被解僱。


@BroiSatse:是的,我安裝了turbolinks。這裏是我需要從我的application.js部分:

//= require jquery 
//= require jquery.turbolinks 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 
+0

$( 「文件」)應該是$(文件)???那是什麼? $。(「link」();)??你會認爲這項工作? –

+2

甚至'$(document)'。 –

+0

你非常快。我甚至沒有時間來編輯我在這個問題上的錯誤。 已直接從我的視圖中添加代碼。 – user3383458

回答

0

嘗試modyfining這

$(function(){ console.log("ready fired");$.("link"();)); 

檢查文檔準備事件被解僱

如果這不是你需要找到事件會觸發並綁定功能。

0

如果我理解你的問題,那麼這樣的事情就足夠了。評論我是否不瞭解問題。

$(document).ready(funtion(){ 

    $(document).on('click touchstart', '#save', function(){ 
     save(); 
    }); 

    function save(){ 
     console.log('This Works'); 
    } 

}); 
+0

我不認爲,你理解我是對的。抱歉。我的文檔準備事件沒有任何問題。 問題是,它不會觸發,當我呈現頁面,但它的工作原理,當它重新加載。 – user3383458

0

這似乎是turbolinks寶石引起的典型問題。該gem通過不爲每個請求加載整個頁面來提高網站性能。顯而易見的問題是,當加載新頁面時,$(document).ready未被觸發。要解決它,你可以改變你的調用:

<%= javascript_tag "$(document).on('page:load', function(){$('#save').click(save);}); 

但是我發現對付它的最好辦法是安裝jquery-turbolinks寶石爲好。只需添加

gem 'jquery-turbolinks' 

到你的Gemfile,運行bundle install和修改你的application.js文件,看起來像某事。

//= require jquery 
//= require jquery.turbolinks 
// ... 
//= require turbolinks 
+0

我已將jquery-turbolinks添加到我的gemfile中,並且還編輯了我的application.js,但仍然只會在我重新加載頁面時加載。 – user3383458

+0

你重新啓動了服務器嗎? – BroiSatse

+0

我正在使用localhost。我不得不關閉我的服務器,以便安裝捆綁包,然後重新啓動它。 Sooo ...是的,我有。 – user3383458

相關問題