hx-include
The hx-include
attribute allows you to include additional element values in an AJAX request. The value of this
attribute can be:
this
which will include the descendants of the element.closest <CSS selector>
which will find the closest
ancestor element or itself, that matches the given CSS selector
(e.g. closest tr
will target the closest table row to the element).find <CSS selector>
which will find the first child descendant element that matches the given CSS selector.next <CSS selector>
which will scan the DOM forward for the first element that matches the given CSS selector.
(e.g. next .error
will target the closest following sibling element with error
class)previous <CSS selector>
which will scan the DOM backwards for the first element that matches the given CSS selector.
(e.g previous .error
will target the closest previous sibling with error
class)Here is an example that includes a separate input value:
<div>
<button hx-post="/register" hx-include="[name='email']">
Register!
</button>
Enter email: <input name="email" type="email"/>
</div>
This is a little contrived as you would typically enclose both of these elements in a form
and submit
the value automatically, but it demonstrates the concept.
Note that if you include a non-input element, all input elements enclosed in that element will be included.
hx-include
is inherited and can be placed on a parent elementhx-include
is inherited, it is evaluated from the element triggering the request. It is easy to get confused
when working with the extended selectors such as find
and closest
.<div hx-include="find input">
<button hx-post="/register">
Register!
</button>
Enter email: <input name="email" type="email"/>
</div>
In the above example, when clicking on the button, the find input
selector is resolved from the button itself, which
does not return any element here, since the button doesn’t have any input
child, thus in this case, raises an error.find
or next
only return a single element at most to
include