htmx/www/content/attributes/hx-select-oob.md
Blake Williams 9ed1275ec3
Document hx-select-oob swap-strategy capabilities (#1694)
The `hx-select-oob` attribute supports specifying a swap strategy but
it's not publicly documented on the attribute page. This documents that
behavior so that it's easy to discover.
2023-08-15 17:29:22 -04:00

47 lines
1.4 KiB
Markdown

+++
title = "hx-select-oob"
+++
The `hx-select-oob` attribute allows you to select content from a response to be swapped in via an out-of-band swap.
The value of this attribute is comma separated list of elements to be swapped out of band. This attribute is almost
always paired with [hx-select](@/attributes/hx-select.md).
Here is an example that selects a subset of the response content:
```html
<div>
<div id="alert"></div>
<button hx-get="/info"
hx-select="#info-details"
hx-swap="outerHTML"
hx-select-oob="#alert">
Get Info!
</button>
</div>
```
This button will issue a `GET` to `/info` and then select the element with the id `info-details`,
which will replace the entire button in the DOM, and, in addition, pick out an element with the id `alert`
in the response and swap it in for div in the DOM with the same ID.
Each value in the comma separated list of values can specify any valid [`hx-swap`](@/attributes/hx-swap.md)
strategy by separating the selector and the swap strategy with a `:`.
For example, to prepend the alert content instead of replacing it:
```html
<div>
<div id="alert"></div>
<button hx-get="/info"
hx-select="#info-details"
hx-swap="outerHTML"
hx-select-oob="#alert:afterbegin">
Get Info!
</button>
</div>
```
## Notes
* `hx-select-oob` is inherited and can be placed on a parent element