我有一个按钮,单击它会触发此操作:
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/