hx-preserve
hx-preserve 属性允许你在 HTML 替换期间保持元素不变。当 htmx 更新任何上级元素时,设置了 hx-preserve 的元素将根据 id 保留。你必须在元素上设置一个不变的 id 才能使 hx-preserve 工作。响应需要具有相同 id 的元素,但其 type 和其他属性将被忽略。
笔记
- hx-preserve不会被继承
- 你可以使用 hx-preserve="true" 它或将 hx-preserve 用作布尔属性
- 不幸的是,有些元素无法正确保存,例如 <input type="text">(焦点和插入符号位置丢失)、iframe 或某些类型的视频。为了解决其中一些情况,我们建议使用 morphdom 扩展,它可以进行更复杂的 DOM 协调
- 当使用历史记录支持诸如后退按钮之类的操作时 hx-preserve 元素的状态也会保留
- 避免将 hx-swap 设置为 none 与可能包含 hx-preserve 元素的请求一起使用,以免丢失它
- hx-preserve 在部分 /oob 响应中进行交换时,可能会导致元素从其当前位置移除并重新定位到新位置
<div id="new_location">
Just relocated the video here
<div id="video" hx-preserve></div>
</div>
可以在 hx-swap-oob 元素的内部内容中使用
<div id="notify" hx-swap-oob="true">
Notification updated but keep the same retain
<div id="retain" hx-preserve></div>
</div>