如何附加bootbox onclose事件?

时间:2014-11-06 12:46:53

标签: javascript twitter-bootstrap-3 bootbox

我有这部分代码使用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(); 
    });

2 个答案:

答案 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();
});