2014-06-12 89 views
2

我通過使用Rails 4進行敏捷Web開發,第11.5節講述如何使圖像可點擊。我跟着通過與教訓,下面是我的store.js.coffee即使代碼僅提交一次,CoffeeScript也會呈現提交操作一次

$(document).on "ready page:change", -> 
    $('.store .entry > img').click -> 
    $(this).parent().find(':submit').click() 

以上能讓我點擊我的店鋪頁面上的圖片,以具體項目添加到購物車,但它將「點擊」它兩次,因此將兩件物品添加到購物車中,而不是隻添加一件。常規的「添加到購物車」按鈕可以很好地工作,所以我不太清楚問題出在哪裏。

我在考慮上面的代碼不足以查明問題,但我不知道要發佈哪些代碼的其他部分,所以請讓我知道是否需要其他信息。謝謝!

+0

「$(document).on」就緒頁面有多少次:更改「'被觸發?也許兩次?一個用於「ready」,另一個用於「頁面:change」? –

+0

@ muistooshort是的!我擺脫了準備,現在它工作。你知道這是爲什麼嗎?因爲本書說要使用就緒頁面:更改 – user3277633

+0

'頁面:change'用於Turbolinks,'ready'是通常的「頁面加載並準備就緒」事件。也許可以嘗試添加jquery.turbolinks gem,只需使用'ready',那寶石隱藏了Turbolinks的廢話,這樣標準的文檔就緒鉤子就足夠了。 –

回答

7

的錯誤是在腳本的第一行。

您需要將元件準備好頁面:更改昏迷。

試試這樣說:

$(document).on "ready, page:change", -> 

它應該工作。

0

我的猜測是您的click可能觸發另一個點擊行動.store,.entryimg。解決方法是防止點擊的默認操作。

嘗試使用這樣的:

$(document).on "ready page:change", -> 
    $('.store .entry > img').click (event) -> 
    event.preventDefault() 
    $(this).parent().find(':submit').click() 
+0

我實現了你的代碼,它仍然增加了兩個項目到購物車 – user3277633

0

完整的代碼段與vinibol12逗號是:

$(document).on "ready, page:change", -> 
    $('.store .entry > img').click -> 
     $(this).parent().find(':submit').click() 

我確認這個固定雙提交問題我在敏捷Web開發與 - 軌道 - 4_p2_0 11.5節