本文介绍如何在嵌套 dom 结构中为不同层级的容器独立管理 loading 状态,通过为每个 loading 添加唯一 `loading` 属性标识,避免父子 loading 冲突,实现精准显示与复用。
在构建复杂 Web 应用时,常需对多个区域(如主内容区、弹窗、上传模块)分别展示 loading 状态。若采用全局类名(如 .webAppModal__loading)直接查找并操作,极易因 DOM 嵌套关系导致误匹配——例如点击“upload”按钮时,本应仅激活 #upload 内的 loading,却因 #main 中已存在同名 class 元素而触发父级 loading 显示,造成视觉重叠与逻辑混乱。
核心解法是为每个 loading 实例绑定唯一上下文标识,而非依赖 CSS 类选择器的层级关系。解决方案采用自定义 HTML 属性 loading=”xxx” 作为加载状态的语义化键名,并结合 jQuery 属性选择器精确定位: