You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Bootstrap 3模态框关闭并移除DOM后残留背景问题求助

解决Bootstrap 3模态框关闭后残留深色背景的问题

你猜的完全正确!问题根源就是模态框的关闭动画还没执行完毕,就被你从DOM里移除了。Bootstrap的modal('hide')方法会触发模态框的淡出动画,而你紧接着调用remove()的时候,页面上的遮罩层(.modal-backdrop)还没来得及被Bootstrap自动清理,所以就留下了那个半透明的深色背景。

别用定时器这种靠猜时长的办法,Bootstrap早就为这种场景准备了专属事件——hidden.bs.modal。这个事件会在模态框完全隐藏、动画彻底结束之后才触发,这时候再执行移除操作,就能完美避免残留问题。

直接用下面的代码替换你原来的逻辑:

let modal = $('#myModal');
modal.modal('hide');

// 监听模态框彻底隐藏的事件
modal.on('hidden.bs.modal', function() {
  // 移除当前模态框元素
  $(this).remove();
  // 保险起见,手动清理可能残留的遮罩层
  $('.modal-backdrop').remove();
});

这里补充两个关键点:

  • 一定要用hidden.bs.modal而不是hide.bs.modal:后者是在关闭动作刚触发、动画还没开始时就执行,起不到等待动画结束的作用
  • 额外移除.modal-backdrop是兜底操作:正常情况下Bootstrap会自动删除遮罩,但如果有其他代码干扰导致清理失败,这一步能确保页面恢复正常

内容的提问来源于stack exchange,提问作者Master_T

火山引擎 最新活动