事件 - htmx:afterOnLoad
htmx:afterOnLoad 是 HTMX 的一个事件,在响应加载完成并更新 DOM 后触发。
它是页面中某个 hx-* 请求完成并完成“交换(swap)”操作(即内容已替换进 DOM)之后,触发的较晚阶段事件。
适合用来:
-
对新插入的 DOM 元素做处理(如绑定事件、初始化插件等);
-
跟踪加载效果;
-
链式触发其他行为。
事件参数
- detail.elt - 发送请求的元素
- detail.xhr - XMLHttpRequest
- detail.target - 请求的目标
- detail.requestConfig - AJAX请求的配置
示例:在内容加载后高亮新内容
<button hx-get="/load-fragment" hx-target="#result" hx-swap="innerHTML">
加载内容
</button>
<div id="result"></div>
<script>
document.body.addEventListener("htmx:afterOnLoad", function (event) {
const newContent = event.detail.target;
// 添加临时高亮
newContent.style.backgroundColor = "#ffffcc";
// 2 秒后去掉高亮
setTimeout(() => {
newContent.style.backgroundColor = "";
}, 2000);
});
</script>
示例:自动滚动到新加载内容
document.body.addEventListener("htmx:afterOnLoad", function (event) {
const el = event.detail.target;
el.scrollIntoView({ behavior: "smooth" });
});
示例:动态绑定事件给新插入的按钮
document.body.addEventListener("htmx:afterOnLoad", function (event) {
const newButtons = event.detail.target.querySelectorAll("button.alert");
newButtons.forEach(btn => {
btn.addEventListener("click", () => {
alert("新加载按钮被点击!");
});
});
});