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

        <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”就在那里,结果相同。 如果我删除数据方法,它将弹出警报并阻止跟踪链接,但即使我确认,它也不会实际触发链接。

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

===============>>#1 票数:9

  $('.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。 我尝试了所有可能的组合。

===============>>#2 票数:1

当尝试控制是否应该执行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; } }); 

  ask by notaceo translate from so

未解决问题?本站智能推荐: