javascript - Jquery停止点击事件直到功能完成

标签 javascript jquery

我有一个按钮,单击它会触发此操作:

var approved = false;

$('.confirm').on('click', function (e) {
    var type = $(this).attr("data-confirm");
    if (approved === false) {
        bootbox.confirm("Are you sure would like to " + type +"?", function (result) {
            if (result) {
                approved = true;
                $(this).trigger('click');
            }
        });
        e.preventDefault();
    }
});

它是一个模态确认框,有 2 个按钮,取消和确认。 这里的目标是等待单击执行,直到用户单击确认框。 当代码运行时,它会显示该框并等待,如果用户单击“取消”,它会关闭模式并且不会触发单击,完美,如果用户单击“确认”它会关闭模式,则将“批准”分配为 true,但是单击新命令不会再次触发事件。

我如何更改它来执行此操作。

如果approveed为false,加载bootbox.confirm并暂停。用户点击确认其加载,如果(结果)将批准分配为 true 并继续点击。

有什么帮助吗?谢谢

最佳答案

我的问题是点击处理程序中的this与点击的按钮不同

var approved = false;

$('.confirm').on('click', function (e) {
    var type = $(this).attr("data-confirm"),
        //use a closure variable since `this` inside the confirm callback is not the button
        $this = $(this);
    if (approved === false) {
        bootbox.confirm("Are you sure would like to " + type + "?", function (result) {
            if (result) {
                approved = true;
                $this.trigger('click');
            }
        });
        e.preventDefault();
    }
});

注意:这可能仍然不适用于所有情况。即,如果原始点击有一个默认操作,例如anchor元素点击,则可能不会触发,而且如果注册了另一个点击处理程序,则可能仍会触发。

关于javascript - Jquery停止点击事件直到功能完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757441/

相关文章:

javascript - 单击事件似乎并未覆盖整个元素

javascript - 正则表达式匹配多字节数字

javascript - 如何在选择框中设置只读 false 以及当选择复选框时,它将是可编辑的。在我的 jquery 代码中禁用不起作用

javascript - 单击文件下载后,成功后使用 AJAX 重定向到另一个页面

javascript - 大 IE7 JS 错误以及 CSS 问题

javascript - 如何将 ajax 请求初始化为 php 变量(对于另一个 php 函数)

javascript - 如何测试 Jasmine 中的方法是否只被调用一次而不是第二次?

javascript - Ember.js 不更新模型

javascript - 流程图显示负值,但它没有任何值

javascript - 使用 log() 显示的 Chrome 控制台是什么?