如何防止双击后Bootbox显示两次?
How to prevent Bootbox from displaying twice after a double click?
我有一个 <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();
});
});
我什至尝试禁用点击该元素,但都失败了。 bootbox还是出现了两次。
$("#email-list").bind('click', function () { return false; });
//...do stuff
$("#email-list").unbind('click');
有人有什么建议吗?
试试这个:
$("#email-list").on("click", ".list-group-item", function (e) {
if(!$('#myModal').is(':visible')){
$('#myModal').modal('show');
}
e.preventDefault();
}
使用点击事件,那么就可以替换
e.preventDefault();
和
e.stopPropagation();
或
return false;
我认为最好的方法是将这两个事件分开; 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
});
}
另一种解决方案是添加:
bootbox.hideAll();
在显示引导框之前隐藏任何其他引导框,如下所示:
bootbox.hideAll();
bootbox.confirm("Some Message " , function (result){/*do stuff*/}
我有一个 <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();
});
});
我什至尝试禁用点击该元素,但都失败了。 bootbox还是出现了两次。
$("#email-list").bind('click', function () { return false; });
//...do stuff
$("#email-list").unbind('click');
有人有什么建议吗?
试试这个:
$("#email-list").on("click", ".list-group-item", function (e) {
if(!$('#myModal').is(':visible')){
$('#myModal').modal('show');
}
e.preventDefault();
}
使用点击事件,那么就可以替换
e.preventDefault();
和
e.stopPropagation();
或
return false;
我认为最好的方法是将这两个事件分开; 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
});
}
另一种解决方案是添加:
bootbox.hideAll();
在显示引导框之前隐藏任何其他引导框,如下所示:
bootbox.hideAll();
bootbox.confirm("Some Message " , function (result){/*do stuff*/}