我有这部分代码使用bootboxjs
function BootBox(title,message,callback) {
var box = bootbox.dialog({
show: false,
backdrop: true,
animate: false,
title: title,
message: message,
buttons: {
cancel: {
label: 'Cancel',
className: 'btn-warning'
},
save: {
label: 'Save',
className: 'btn-success',
callback: callback
}
}
});
$(document).keyup(function(e) { // HOW TO UNREGISTER THIS EVENT HOOK?
if(box && e.keyCode == 27) box.modal("hide");
});
return box;
}
keyup方法,当我调用很多BootBox()
时调用次数太多,如何在关闭框时取消注册keyup事件挂钩?
修改
没关系,我有一个更好的方法,将document
更改为box
,现在当多次调用BootBox
函数时,不会多次调用该事件
$(box).keyup(function(e) {
if(box && e.keyCode == 27) box.modal("hide").remove();
});
答案 0 :(得分:2)
你可以这样做:
$("#box").on( "hide" , function() {
$(document).off( "keyup" , "#box" );
});
说明:
“keyup”是事件
“#box”是选择器,所以它只计算#box
答案 1 :(得分:0)
使用event.stopPropagation() - http://api.jquery.com/event.stoppropagation/ 在你的情况下
$(document).keyup(function(e) { // HOW TO UNREGISTER THIS EVENT HOOK?
if(box && e.keyCode == 27) box.modal("hide");
e.stopPropagation();
});