【问题标题】:Rails 3, link_to with remote option - JavaScript is only working for the first clickRails 3,带有远程选项的 link_to - JavaScript 仅适用于第一次点击
【发布时间】:2013-06-16 19:34:24
【问题描述】:

我有一个元素库,每个元素都有一个“#thumbnail”类,每个缩略图下面都有一个“删除”链接。

以下代码的问题是 JavaScript“ajax:success”代码仅在第一次单击时运行,即它调用警报对话框,每次我随后单击另一个“删除”链接时,ajax 触发 & 中的操作我的控制器完成了我的预期,但是警告对话框不再显示 - 除非我刷新整个页面,然后它当然只能在第一次再次工作。

谁能看到出了什么问题?我已经在这里寻找答案,但说实话有点迷茫。

link_to(查看):

<%= link_to("Delete", "/graphics/0?url=#{image_url}", :method => "delete", :remote => true, :id => "delete-graphic") %>

控制器动作:

  def destroy
    render :json => {"result" => "ok"}
  end

JS:

  $(document).ready(function() { 
    $('#delete-graphic').bind('ajax:success', function() {
      alert("delete");
    });
  });

【问题讨论】:

  • 也许你的 id 重复了?我的意思是几个具有相同 id 的链接

标签: javascript jquery ruby-on-rails ajax


【解决方案1】:

DOM ID 旨在唯一。您应该绑定到一个类而不是一个 ID,这将使您的 jQuery 方法能够处理每个调用,而不仅仅是第一个调用。

更改您的 link_to 调用以使用类:

&lt;%= link_to("Delete", "/graphics/0?url=#{image_url}", :method =&gt; "delete", :remote =&gt; true, :class =&gt; "delete-graphic") %&gt;

更改您的 jQuery 以绑定到该类:

$(document).ready(function() { 
  $('.delete-graphic').bind('ajax:success', function() {
    alert("delete");
  });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多