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

点击div触发模态框后禁用该div 点击其他div再恢复点击的实现方案

实现方案

核心逻辑

  • 通过类名标记触发模态框的.container-are-you-sure元素的可用状态,无需额外维护全局变量
  • 点击模态框确认按钮后给触发元素加禁用类,再次点击时直接拦截逻辑不弹出模态框
  • 监听.container-what-we-offer的点击事件,点击后移除触发元素的禁用类,恢复点击功能

补充CSS(模态框默认隐藏+禁用态样式)

/* 模态框基础样式,可根据自身需求调整 */
.modal {
  display: none;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 24px;
  background: #fff;
  box-shadow: 0 2px 12px rgba(0,0,0,0.1);
  z-index: 9999;
}
/* 触发元素禁用态视觉样式,可省略 */
.container-are-you-sure.disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none; /* 加这个属性可以直接禁止所有鼠标事件,连点击判断都可以省 */
}

完整jQuery代码

// 模态框显示封装
function showModal() {
  $('.modal').show();
}
// 模态框隐藏封装
function hideModal() {
  $('.modal').hide();
}

// 触发模态框元素点击事件
$('.container-are-you-sure').click(function() {
  // 有禁用类直接终止逻辑
  if ($(this).hasClass('disabled')) return;
  showModal();
});

// 模态框确认按钮点击事件
$('.modal button').click(function() {
  hideModal();
  // 给触发元素加禁用类
  $('.container-are-you-sure').addClass('disabled');
});

// 另一个div点击事件,恢复触发元素功能
$('.container-what-we-offer').click(function() {
  $('.container-are-you-sure').removeClass('disabled');
});

优化说明

如果你给禁用态加了pointer-events: none的CSS属性,可以直接省略点击事件里的禁用判断逻辑,浏览器会自动拦截该元素的所有鼠标交互,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:48:00