我在我的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响应返回它将更新链接。但是,例如,如果用户由于尚未返回请求而快速点击链接几次(因此链接尚未更新),则这不起作用。
答案 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');