不管这个 jQuery 都会触发: $('.notify-btn').click(f-6ren">
gpt4 book ai didi

javascript - Rails link_to 忽略 e.preventDefault();来自 jQuery 调用,因为方法 : :get is set

转载 作者:搜寻专家 更新时间:2023-11-01 05:00:56 24 4
gpt4 key购买 nike

通过实验,我了解到以下代码:

        <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。我一个一个地删除了链接的元素,并尝试了各种组合。如果 method::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。我尝试了所有可能的组合。

关于javascript - Rails link_to 忽略 e.preventDefault();来自 jQuery 调用,因为方法 : :get is set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23177627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com