在发送ajax请求后正确更新链接href

时间:2012-02-17 01:39:53

标签: jquery ruby-on-rails ajax

我在我的rails应用设置中有一个链接来发出ajax请求

= link_to "link text", some_url, :remote => true

我还有一个jquery点击处理程序,它会在点击时更改网址

$('a').click(function() { 
  // change url to "other_url" 
});

问题是链接在我的ajax请求发送之前发生了变化。所以第一次点击它,而不是像它应该的那样去“some_url”,它最终会变成“other_url”。

有没有简单/简单的方法来解决这个问题?目前我有ajax:complete绑定到链接,所以一旦ajax响应返回它将更新链接。但是,例如,如果用户由于尚未返回请求而快速点击链接几次(因此链接尚未更新),则这不起作用。

1 个答案:

答案 0 :(得分:0)

我会使用ajax:beforeSend回调来在AJAX请求完成时禁用点击。然后,将网址更改为ajax:complete回调中的新值。

在点击处理程序

$('a').click(function(){
  if($(this).attr("disabled") == "disabled"){
    return false;
  }
});

ajax:beforeSend回调中类似......

$('a').removeAttr('data-remote');
$('a').attr("disabled","disabled");

然后在ajax:complete回调中使用类似

的内容
// Change the URL...
$('a').removeAttr('disabled');
$('a').attr('data-remote','true');