繁体   English   中英

Rails link_to忽略e.preventDefault(); 从jQuery调用,因为方法:: get设置

[英]Rails link_to ignoring e.preventDefault(); from a jQuery call because method: :get is set

实验上我已经了解到以下代码:

        <td><%= link_to 'Notify', '/w/'+w.id+'/notify', method: :get, :class => "btn btn-success notify-btn" %></td>

无论这个jQuery如何都会触发:

  $('.notify-btn').click(function(e){
    e.preventDefault();
    bootbox.confirm("Alert?", function(result){
      if(result === true){
        return true;
      } else {
        return false;
      }
    });
  });

这是由于方法:: get。 我逐个删除了链接的元素并尝试了各种组合。 如果方法:: get就在那里,它就会触发。

我可以阻止它e.stopPropagation,但那么它不会跟随链接 即使我单击“确定”,它也只是在页面上无所事事。

如果我摆脱erb并使用直接HTML,如下所示:

<a href="/w/53531e8a963e6503c60002b2/notify" class="btn btn-success notify-btn" data-method="get">Notify</a>

而data-method =“get”就在那里,结果相同。 如果我删除数据方法,它将弹出警报并阻止跟踪链接,但即使我确认,它也不会实际触发链接。

关于我做错了什么的任何想法?

  $('.notify-btn').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    var link = $(this).attr('href')
    bootbox.confirm("Alert?", function(result){
      if(result){
        window.location = link;
        return true;
      } else {
        return false;
      }
    });
  });

我不得不使用一些技巧 - 但上面的工作。

奇怪的是,它最终需要preventDefault和stopPropagation。 我尝试了所有可能的组合。

当尝试控制是否应该执行link_to请求时,我也遇到了同样的问题,并且基于某些条件并且最终执行了以下操作

  1. 使用方法get或post创建隐藏的 link_to按钮
  2. 创建一个可见的link_to按钮
  3. 如果条件为真,则单击可见的link_to按钮时,将触发隐藏的link_to按钮
  4. 如果条件为false,则单击可见的link_to按钮时,只返回false将执行该作业

例如,假设类.link-to和.link-to-with-method

 $('.link-to').click(function(){ if(condition){ $('.link-to-get-method').trigger('click'); return true; }else{ return false; } }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM