hx-include
Атрибут hx-include позволяет включать дополнительные значения элементов в запросе AJAX. Значение этого атрибута может быть:
- CSS-селектором элементов для включения.
-
this, что включит потомков элемента. -
closest <CSS selector>, который найдёт ближайший предковый элемент или сам себя, соответствующий заданному CSS-селектору (например,closest trбудет выбирать ближайшую строку таблицы к элементу). -
find <CSS selector>, который найдёт первый дочерний элемент-потомок, соответствующий заданному CSS-селектору. -
next <CSS selector>, который сканирует DOM вперёд, чтобы найти первый элемент, соответствующий заданному CSS-селектору. (Например,next .errorвыберет ближайшего следующего брата с классомerror) -
previous <CSS selector>, который сканирует DOM назад, чтобы найти первый элемент, соответствующий заданному CSS-селектору. (Например,previous .errorвыберет ближайшего предыдущего брата с классомerror)
Вот пример, включающий отдельное значение ввода:
<div>
<button hx-post="/register" hx-include="[name='email']">
Register!
</button>
Enter email: <input name="email" type="email"/>
</div>
Этот пример немного искусственный, так как обычно оба этих элемента заключаются в form и значение отправляется автоматически, но он демонстрирует концепцию.
Обратите внимание, что если вы включаете элемент, не являющийся элементом ввода, будут включены все элементы ввода, заключённые в этом элементе.
Примечания
-
hx-includeнаследуется и может быть помещён на родительский элемент - Хотя
hx-includeнаследуется, он оценивается с элемента, вызывающего запрос. Легко запутаться, работая с расширенными селекторами, такими какfindиclosest.
В приведённом примере, при нажатии на кнопку, селектор<div hx-include="find input"> <button hx-post="/register"> Register! </button> Enter email: <input name="email" type="email"/> </div>find inputразрешается с самой кнопки, которая здесь не возвращает никакого элемента, так как кнопка не имеетinputдочернего элемента, поэтому в этом случае возникает ошибка. - Стандартный CSS-селектор резольвится в document.querySelectorAll и включит несколько элементов, в то время как расширенные селекторы, такие как
findилиnext, возвращают не более одного элемента для включения
Licensed under the Zero-Clause BSD License.
https://htmx.org/attributes/hx-include/