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