2014-06-12 45 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节