Перейти к содержимому
Поставьте ⭐️ проекту перевода GitHub

Наследование атрибутов

Большинство атрибутов в htmx наследуются: они применяются как к элементу, на котором указаны, так и к его дочерним элементам. Это позволяет «поднимать» атрибуты вверх по DOM, избегая дублирования кода. Рассмотрим следующий пример:

<button hx-delete="/account" hx-confirm="Уверены?">
Удалить учётку
</button>
<button hx-put="/account" hx-confirm="Уверены?">
Обновить учётку
</button>

В данном случае атрибут hx-confirm дублируется. Решение — перенести его на уровень выше, к родительскому элементу:

<div hx-confirm="Уверены?">
<button hx-delete="/account">
Удалить учётку
</button>
<button hx-put="/account">
Обновить учётку
</button>
</div>

Теперь атрибут hx-confirm будет применяться ко всем элементам с htmx внутри этого блока.

Иногда требуется отменить это наследование. Например, если в группе есть кнопка отмены, для которой подтверждение не нужно. В этом случае можно добавить директиву unset:

<button hx-confirm="unset">Отмена</button>
```html
<div hx-confirm="Уверены?">
<button hx-delete="/account">
Удалить учётку
</button>
<button hx-put="/account">
Обновить учётку
</button>
<button hx-confirm="unset" hx-get="/">
Отменить
</button>
</div>

Две верхние кнопки будут показывать диалог подтверждения, а нижняя кнопка отмены — нет.

Наследование можно отключить для отдельных элементов и атрибутов с помощью атрибута hx-disinherit.

Чтобы полностью отключить наследование атрибутов, установите конфигурационную переменную htmx.config.disableInheritance в true. Это отключит наследование по умолчанию и позволит явно указывать наследование с помощью атрибута hx-inherit.