事件 - htmx:afterSettle

htmx:afterSettle 是 HTMX 在执行完一次 请求插入(swap)动作之后,所有 DOM 更新和过渡动画完成后 触发的事件。

这是 HTMX 处理生命周期中的最后一步之一。你可以在这个事件中安全地操作最终状态的 DOM,比如:

  • 启用按钮

  • 停止 loading 动画

  • 滚动页面

  • 聚焦新插入的表单字段

事件参数

  • detail.elt - 发送请求的元素
  • detail.xhr - XMLHttpRequest
  • detail.target - 请求的目标
  • detail.requestConfig - AJAX请求的配置

示例代码

<button 
  hx-get="/data" 
  hx-target="#result" 
  hx-swap="innerHTML">
  加载内容
</button>

<div id="result">这里是内容区域</div>

<script>
  document.body.addEventListener("htmx:afterSettle", function(evt) {
    console.log("DOM 插入与动画完全完成!");
    const el = evt.detail.elt;
    el.classList.add("fade-in-done");

    // 示例:滚动到新内容
    el.scrollIntoView({ behavior: "smooth" });
  });
</script>

使用场景

  • 关闭 loading 状态
  • 聚焦某个新输入框
  • 插入后再初始化插件
  • 滚动到新插入位置

和其它几个事件的对比

事件名 触发时机
htmx:afterSwap 内容插入后,动画/transition 可能还没结束
htmx:afterSettle 动画与 transition 都已完成,DOM 结构稳定
htmx:afterOnLoad 仅在响应中有 <script> 并执行完时触发
htmx:beforeSwap 可以拦截并修改插入的 HTML