双击后如何防止Bootbox显示两次?

时间:2015-09-16 20:11:15

标签: javascript jquery bootbox

我有一个<ul>元素,可以在点击时打开一个bootbox。双击此元素会触发JQuery中的onclick两次

$("#email-list").on("click", ".list-group-item", function (e) {
bootbox.confirm("Send a forgotten password email to " + email + "?", function (result) {...}}

我尝试使用'e.preventDefault()'

$(document).ready(function () {

    $("#email-list").dblclick(function (e) {

        e.preventDefault();
    });

});

我甚至尝试禁用点击元素,但都失败了。引导箱仍然出现两次。

$("#email-list").bind('click', function () { return false; });
//...do stuff
$("#email-list").unbind('click');

有人有建议吗?

4 个答案:

答案 0 :(得分:7)

另一种解决方案可以是添加:

bootbox.hideAll();

在显示引导框之前隐藏任何其他引导框,如下所示:

bootbox.hideAll();
bootbox.confirm("Some Message " , function (result){/*do stuff*/}

答案 1 :(得分:1)

试试这个:

$("#email-list").on("click", ".list-group-item", function (e) {
   if(!$('#myModal').is(':visible')){
       $('#myModal').modal('show');  
   }
   e.preventDefault();
}

答案 2 :(得分:0)

使用点击事件,然后您可以替换

e.preventDefault(); 

e.stopPropagation(); 

return false;

答案 3 :(得分:0)

我认为最好的方法是分开两个事件; onclick和dbclick,我使用过这样的东西,我希望能节省一些时间:

var DELAY = 700, clicks = 0, timer = null;

    $(function () {

        $("#email-list").on("click", ".list-group-item", function (e) {

            clicks++;  //count clicks

            if (clicks == 1) {
                   //do stuff
                    clicks = 0;  //after action performed, reset counter

                }, DELAY);
            } else {

                clearTimeout(timer);    //prevent single-click action
                clicks = 0;             //after action performed, reset counter
                return false;
            }

        })
        .on("dblclick", function (e) {
            e.preventDefault();  //cancel system double-click event
        });
   }