Rails UJS - 解除绑定事件处理程序

时间:2012-11-14 11:28:05

标签: ruby-on-rails ruby-on-rails-3.2

我有link_to辅助方法生成的删除按钮。它产生以下标记。

<a href="/clips/150" class="btn btn-mini btn-danger" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>

当我单击此按钮时,它会按预期打开confirm对话框。

但是,我想覆盖此确认对话框。我想使用Bootbox显示确认对话框。

所以,我尝试解除这些按钮的点击事件。我已经尝试了以下所有方法(在控制台中)。但都没有效果。

$('a[data-confirm]').unbind('click')

,或者

$('a[data-confirm]').off('click')

,或者

$('a[data-confirm]').undelegate('click')

甚至,我尝试click.rails作为事件名称,因为我看到这是jquery_ujs.js中的声明。

$(document).delegate(rails.linkClickSelector, 'click.rails', function(e) {

您可以在调用帮助方法时让我删除:confirm => true。但我不希望这样。我希望这是默认功能。我将覆盖运行时。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

如何覆盖默认确认操作?参见UJS的源代码:

// Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
confirm: function(message) {
  return confirm(message);
},

答案 1 :(得分:1)

虽然我问过如何覆盖rails ujs默认确认方法,但我的目的是使用bootbox confirm对话框而不是默认浏览器的确认框。

我在这里开箱即用解决方案。我在这里链接这个,以便它可以帮助其他有类似要求的人:

https://gist.github.com/2823526