事件 - htmx:beforeCleanupElement
当 HTMX 要从页面中移除一个元素(如替换或清空时),在真正移除之前,触发该事件,让你有机会做清理工作。
常见使用场景
-
元素被 hx-swap="outerHTML" 替换前
-
元素即将从 DOM 中被删除时
-
想在元素移除前解绑你自己附加的自定义行为(动画、事件、资源)
事件参数
- detail.elt - 即将被清理的元素
示例代码
<div id="alert-box" hx-get="/new-alert" hx-swap="outerHTML" hx-trigger="click">
<p>提示:点击我会加载新的提示框,并替换这个区域。</p>
</div>
<script>
document.body.addEventListener("htmx:beforeCleanupElement", function (evt) {
const el = evt.target;
console.log("准备移除元素:", el);
// 假设绑定了一些事件,现在手动清理
if (el.id === "alert-box") {
console.log("清理 alert-box 资源或事件...");
// 示例:移除定时器、解绑自定义事件等
}
});
</script>
-
页面上有个 #alert-box 元素,它有 hx-get 和 hx-swap="outerHTML"。
-
当用户点击它时,会发起请求,HTMX 收到响应后会替换这个元素(即将其移除并用新内容替代)。
-
在元素真正被删除之前,HTMX 触发 htmx:beforeCleanupElement 事件。
-
你可以通过监听这个事件,在移除前执行逻辑。
补充说明
-
该事件是 冒泡的,你可以监听 document.body 或更上层容器。
-
使用场景类似于 Vue 的 beforeUnmount、React 的 useEffect cleanup。
-
常见于带有副作用的组件,如:
-
第三方图表(Chart.js)
-
定时器 / 动画帧
-
WebSocket 连接
-
外部库初始化(如 jQuery UI)
-