【问题标题】:How to prevent Bootbox from displaying twice after a double click?如何防止Bootbox双击后显示两次?
【发布时间】:2015-09-16 20:11:14
【问题描述】:

我有一个<ul> 元素,当它被点击时会打开一个引导箱。双击该元素会触发 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');

有人有建议吗?

【问题讨论】:

  • 你可以给#email-list,或者bootbox一个新的类,比如.open,当你点击的时候?然后检查该元素是否打开了该类,如果没有,请执行它需要做的事情
  • 展示您如何检索 bootbox 以及您为防止它出现两次而采取的措施。
  • 您希望它与单击和双击一起使用吗?
  • 如果您只想将处理程序绑定到双击事件,请使用.on( "dblclick", selector, handler ) 或其快捷方式.dblclick(...) 但是,我不确定我是否理解正确。
  • 我添加了一些细节。 @dfsq 是的,没错。

标签: javascript jquery bootbox


【解决方案1】:

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

bootbox.hideAll();

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

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 我做到了,$('#myModal').is(':visible') 总是假的,因此它总是显示引导框
    【解决方案3】:

    使用点击事件,则可以替换

    e.preventDefault(); 
    

    e.stopPropagation(); 
    

    return false;
    

    【讨论】:

      【解决方案4】:

      我认为最好的方法是将这两个事件分开; 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
              });
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        • 2017-07-19
        • 1970-01-01
        • 2012-06-01
        • 2022-01-21
        相关资源
        最近更新 更多