无法监听bootbox hidden.bs.modal事件

时间:2017-05-02 06:35:24

标签: twitter-bootstrap javascript-events bootbox

我必须听取所有模态隐藏事件,使用自举标准事件:

$(document).on("hidden.bs.modal",".modal",function(){
   ...
});

我还需要将此事件用于bootbox对话框,但这不起作用。查看我发现的bootbox源代码(https://github.com/makeusabrew/bootbox/blob/master/bootbox.js的第659行):

 dialog.one("hidden.bs.modal", function(e) {
      // ensure we don't accidentally intercept hidden events triggered
      // by children of the current dialog. We shouldn't anymore now BS
      // namespaces its events; but still worth doing
      if (e.target === this) {
        dialog.remove();
      }
});

如果在我的回调之前调用了这个bootbox回调,我就毫无希望,因为这会破坏调用对象。

是否可以绕过这个问题?如何调用所有模态隐藏事件(也适用于bootbox模态)?

3 个答案:

答案 0 :(得分:1)

您可以在版本5.4中使用“ onHidden”。

bootbox.alert({
        message: 'You message',
        onHidden: function(e) {
            /* e is the hide.bs.modal event */
            if($(".modal").hasClass('show')){
                $('body').addClass('modal-open');
            }
        } 
    });

答案 1 :(得分:0)

假设可以封装...代码,您可以为您进行的每个Bootbox调用订阅该事件。类似的东西:

function doSomethingWhenModalCloses(){
    ...
}

bootbox
    .alert('I am an alert!')
    .on('hidden.bs.modal', doSomethingWhenModalCloses); // repeat for other functions

这显然不是最优的,但Bootbox并没有真正提供以全局方式委派这些事件的内置方式。

答案 2 :(得分:0)

所以我知道这是一篇旧文章,但未得到答复。这是我的工作解决方案

 dialog.on('hidden.bs.modal', function () {
    console.log('SHOW ME WHEN HIDDEN!')
 })

为了在上下文中显示它,我做了一个jsFiddle