2012-11-14 30 views
2

我有一个由link_to帮助程序方法生成的删除按钮。它产生以下标记。Rails UJS - 解除绑定事件处理程序

<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。但我不想那样。我希望这是默认功能。我将覆盖运行时。我怎样才能做到这一点?

回答

1

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

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

你带我到正确的道路:以使其可以帮助其他人有类似的要求,我在这里连接这一点。我可以重写'$ .rails.confirm'。 – HungryCoder

1

虽然我询问如何覆盖UJS默认confirm方法的轨道,我的实际意图是使用bootbox确认对话框,而不是默认的浏览器的确认框。

我在这里得到了开箱即用的解决方案。

https://gist.github.com/2823526

相关问题