HTMX ofrece múltiples modos para intercambiar el HTML recibido en el DOM mediante el atributo hx-swap (en inglés: “swap” - Intercambio).
Por defecto, el contenido reemplaza el interior del elemento objetivo con innerHTML, pero puedes personalizar este comportamiento para insertar o reemplazar contenido de distintas maneras y crear interfaces web dinámicas sin necesidad de escribir JavaScript adicional.
hx-swap='innerHTML'Reemplaza el contenido del elemento de destino con el contenido devuelto, sin afectar el resto del DOM.
<button hx-get="/contenido" hx-swap="innerHTML" hx-target="#contenedor">
Reemplazar contenido interno
</button>
<div id="contenedor">
Contenido original
</div> hx-swap="innerHTML": Reemplaza solo el contenido dentro del elemento destino.hx-swap='outerHTML'Reemplaza todo el elemento de destino con el contenido devuelto, incluyendo su etiqueta.
<button hx-get="/nuevo-elemento" hx-swap="outerHTML" hx-target="#contenedor">
Reemplazar elemento completo
</button>
<div id="contenedor">
Elemento original
</div> hx-swap="outerHTML": Reemplaza el elemento completo incluyendo su etiqueta.hx-swap='afterbegin'Inserta el contenido devuelto al principio del elemento de destino, como primer hijo.
<button hx-get="/contenido" hx-swap="afterbegin" hx-target="#contenedor">
Insertar al inicio
</button>
<div id="contenedor">
Contenido original
</div> hx-swap="afterbegin": Inserta el contenido devuelto como primer hijo del elemento destino.hx-swap='beforebegin'Inserta el contenido devuelto justo antes del elemento de destino, como primer hijo.
<button hx-get="/contenido" hx-swap="beforebegin" hx-target="#contenedor">
Insertar antes del elemento
</button>
<div id="contenedor">
Contenido original
</div> hx-swap="beforebegin": Inserta el contenido devuelto justo antes del elemento destino.hx-swap='afterend'Inserta el contenido devuelto justo despues del elemento de destino, como ultimo hijo.
<button hx-get="/contenido" hx-swap="afterend" hx-target="#contenedor">
Insertar después del elemento
</button>
<div id="contenedor">
Contenido original
</div> hx-swap="afterend": Inserta el contenido devuelto justo después del elemento destino.hx-swap='none'No realiza ningún intercambio de contenido, pero permite que la petición y los eventos asociados se ejecuten normalmente.
<button hx-get="/contenido" hx-swap="none" hx-target="#contenedor" hx-on="htmx:afterOnLoad: alert('Contenido cargado')">
No intercambiar contenido
</button>
<div id="contenedor">
Contenido original
</div> hx-swap="none": No modifica el DOM, aunque la petición se realiza y puede usarse para disparar eventos.