首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂时禁用rails远程链接

暂时禁用rails远程链接
EN

Stack Overflow用户
提问于 2014-06-08 03:45:21
回答 5查看 2.6K关注 0票数 1

在服务器向数据库发送真/假数据时,我需要关闭远程链接。然后,我将重新启用ajax:success上的链接。

我不能在rails远程链接上使用e.preventDefault()

我想做这样的事:

代码语言:javascript
复制
$('body').on('click', '.toggle_link', function(){
  //disable remote link
})

$('body').on('ajax:success', '.toggle_link', function(){
  //enable remote link
})

是否有最佳做法来完成这一任务?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-12 04:18:11

这应该会禁用远程链接。

代码语言:javascript
复制
$('#remote_link').removeAttr('data-remote').removeAttr('href')

要重新启用它,可以将目标url存储在某个data属性(data-target或smth)中,并将href带回ajax:success

票数 3
EN

Stack Overflow用户

发布于 2016-03-07 22:42:27

您还可以连接到ujs中的ajax:beforeSend事件。

代码语言:javascript
复制
  $(document).on('ajax:beforeSend', 'a[data-remote=true]', function(event, xhr, status, error) {
    // stash the link
    // remove the href
  });

当数据远程链接有一个“禁用”的css类时,我使用了这些变量来防止数据远程链接运行。

代码语言:javascript
复制
  $(document).on('ajax:beforeSend', 'a.disabled[data-remote=true]', function(event, xhr, status, error) {
    event.preventDefault();
    event.stopImmediatePropagation();
    return false;
  });
票数 4
EN

Stack Overflow用户

发布于 2014-06-09 23:46:09

最终为我工作的是使用user2675613的部分答案,然后删除data-remote="true"data-method="put"属性。

代码语言:javascript
复制
//to disable
var url_link = $(this).attr('href');
$(this).attr('data-href', url_link);
$(this).attr('href', "#");
$(this).removeAttr('data-remote');
$(this).removeAttr('data-method');

//to enable 
var url_link = $(this).attr('data-href');
$(this).attr("href", url_link);
$(this).attr("data-remote", "true");
$(this).attr("data-method", "put");

这是用于更新操作的,因此根据操作的不同,可以存储数据方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24102803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档