1

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

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

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

链接到(视图):

<%= 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");
    });
  });
4

1 回答 1

1

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

更改您的link_to呼叫以使用类:

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

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

$(document).ready(function() { 
  $('.delete-graphic').bind('ajax:success', function() {
    alert("delete");
  });
});
于 2013-06-20T05:19:11.893 回答