data-method 否定旧 jquery-rails 上的 data-confirm

data-method negates data-confirm on old jquery-rails

提问人:user208769 提问时间:10/10/2015 更新时间:10/10/2015 访问量:137

问:

我支持一个运行 Rails 3.2 jquery 1.7 的旧站点,带有自定义 jquery-rails(gemfile 说它是 0.2.6 - 但公共文件夹中有一个自定义的,所以它可能已经更新了)

我有一个带有确认的删除链接 (data-method=delete) (data-confirm=“您确定要删除它吗?但是,即使我在确认框中单击取消,该项目也会被删除。我猜这是最近才开始发生的。任何想法为什么开始发生这种情况以及如何解决它?

jquery ruby-on-rails-3.2 unobtrusive-javascript jquery-rails

评论


答:

0赞 user208769 10/10/2015 #1

因此,我设法通过以下命令破解jquery.rails.js来解决这个问题:

/**
 *  confirmation handler
 */
$('a[data-confirm],input[data-confirm]').live('click', function (event) {
    var el = $(this);
    if (el.triggerAndReturn('confirm')) {
        if (!confirm(el.attr('data-confirm'))) {
            event.preventDefault();
            $(event.currentTarget).data('failed-confirm', true);
            return false;
        }
        ...

这样,如果用户单击“取消”,它将在我可以测试的链接上设置数据。然后,在数据方法处理程序的开头:

    $('a[data-method]:not([data-remote])').live('click', function (e){
        if($(e.currentTarget).data('failed-confirm')) {
            $(e.currentTarget).data('failed-confirm', false);
            return false;
        }
        ...

这似乎有效,但我仍然对发生了什么变化感到好奇......