【问题标题】:Jquery live not firing on successJquery live没有成功触发
【发布时间】:2012-02-29 21:24:05
【问题描述】:

我在 ajax 成功时遇到 jquery 实时触发的问题。这是我的 link_to 函数。

<%= link_to image_tag("cross.png"), patient_recurrence_detail_path(params[:id],f.object.id), :remote => true, :class => 'delete_recurrence_detail', :method => :delete, :confirm=>'Are you sure you?' %>

它调用的方法是this

def destroy
  @recurrence_detail = RecurrenceDetail.find(params[:id])
  @recurrence_detail.destroy
  respond_to do |format|
    format.html { redirect_to patient_path(params[:patient_id]) }
    format.js { render :nothing => true }
  end
end

最后,我在创建的链接上附加了一个 jquery live 函数。 (我在这里使用 .bind() 无济于事)

$('a[data-method="delete"]').live("ajax:success", function(data, textStatus, jqXHR){
   $(this).parents('div.fields').remove();
});

我注意到在我的网络流量中,我之前收到了删除的 OK 状态,所以我对为什么没有调用 live 函数有点困惑。注意:我也尝试过使用 .bind() 。我确实有 jquery-rails gem。

更新:我尝试使用 .ajaxSuccess() 并更新了我的 gem,但仍然没有成功。我是否需要在我的 respond_to 中添加一些内容以用于 ajax?

【问题讨论】:

  • 可能是在事件名称中使用冒号的语法问题,如果 ajax:before 不是自定义事件,那肯定是个问题
  • 抱歉,已编辑帖子。我的意思是在那里有 ajax:success。
  • ajasSuccess 是一个方法api.jquery.com/ajaxSuccess 没见过绑定的,使用方法语法更安全
  • 真的看不出你在做什么来提供帮助,可能会启动一个更关注 ajax 客户端 js 代码的线程
  • 你的jquery-rails是什么版本的?

标签: jquery ajax ruby-on-rails-3


【解决方案1】:

简约的答案,我知道,但也许尝试更新的api.jquery.com/on

编辑:我认为 gem 大约一个月前刚刚被撞到 jquery 1.7.1...

【讨论】:

    【解决方案2】:

    直到现在,我都不知道这是可能的!然后我从docs 中了解到,Ajax 事件被广播到所有 DOM 元素。

    根据文档,您应该绑定到ajaxSuccess,而不是“ajax:success”。

    【讨论】:

    • $('a[data-method="delete"]').bind("ajaxSuccess",...但没有成功。太奇怪了。
    • 它应该可以工作,请参阅demo。您确定实际触发了 ajax 请求(使用 Firebug 控制台)吗?否则,ajaxSuccess 将永远不会触发。
    • 是的,应该。我一定有什么古怪的事情发生。我最终让 js 响应从 DOM 中删除了该字段,但感谢您的帮助,bfavaretto。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多