You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关闭特定Modal后刷新页面问题:为何两Modal关闭均触发页面刷新?

问题原因分析

你当前的代码给document.body绑定了两次hidden.bs.modal事件处理函数,任何一个Modal关闭时,这两个函数都会被触发。第二个函数里的location.reload()没有做任何判断,所以不管关闭的是#myModal还是#myModal2,页面都会被刷新。

解决方案

这里提供两种靠谱的解决思路:

方案1:给特定Modal单独绑定事件

直接把事件绑定到对应的Modal元素上,这样只有目标Modal关闭时才会触发对应的处理逻辑:

// 仅处理#myModal的关闭,不刷新页面
$('#myModal').on('hidden.bs.modal', function () {
  $(this).removeData('bs.modal');
});

// 仅处理#myModal2的关闭,同时刷新页面
$('#myModal2').on('hidden.bs.modal', function () {
  $(this).removeData('bs.modal');
  location.reload();
});

方案2:在全局事件中判断关闭的Modal

如果坚持要绑定到document.body,可以通过事件对象的target属性判断当前关闭的是哪个Modal,再执行对应逻辑:

$(document.body).on('hidden.bs.modal', function (e) {
  const closedModalId = $(e.target).attr('id');
  
  if (closedModalId === 'myModal2') {
    $('#myModal2').removeData('bs.modal');
    location.reload(); // 只有关闭#myModal2时才刷新
  } else if (closedModalId === 'myModal') {
    $('#myModal').removeData('bs.modal');
  }
});

这两种方法都能精准控制只有#myModal2关闭时才刷新页面,而#myModal关闭时仅清除模态框数据,不会触发刷新。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:52:55