Spec-Zone.ru › htmx

hx-swap-oob

Помечает элементы ответа для замены на странице по ID

Атрибут hx-swap-oob заменяет содержимое ответа за пределами основного целевого элемента.

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

Синтаксис

<div id="alerts" hx-swap-oob="true">
    Alert message
</div>

Рассмотрим следующий HTML-код ответа:

<div>
 ...
</div>
<div id="alerts" hx-swap-oob="true">
    Saved!
</div>

Первый <div> заменяется в основном целевом элементе.

Второй заменяет существующий элемент #alerts за пределами этого целевого элемента.

Значением hx-swap-oob может быть:

  • true
  • любое допустимое значение hx-swap
  • любое допустимое значение hx-swap, за которым следует двоеточие, а затем CSS-селектор

Если значение равно true или outerHTML (эти значения эквивалентны), элемент будет заменён встроенным способом.

Если указано значение стратегии замены, будет использована эта стратегия, а окружающая пара тегов будет удалена для всех стратегий, кроме outerHTML.

Если указан селектор, будут заменены все соответствующие ему элементы. Если селектор не указан, будет заменён элемент с ID, совпадающим с ID нового содержимого.

Использование альтернативных стратегий замены

Стратегии замены, отличные от true или outerHTML, удаляют обёртку. Используйте обёртку, допустимую в контексте целевого элемента.

При попытке вставить <tr> в таблицу, использующую <tbody>:

<tbody hx-swap-oob="beforeend:#table tbody">
	<tr>
		...
	</tr>
</tbody>

Обычная таблица:

<table hx-swap-oob="beforeend:#table2">
	<tr>
		...
	</tr>
</table>

Элемент <li> можно обернуть в <ul>, <ol>, <div> или <span>, например:

<ul hx-swap-oob="beforeend:#list1">
	<li>...</li>
</ul>

Элемент <p> можно обернуть в <div> или <span>:

<span hx-swap-oob="beforeend:#text">
	<p>...</p>
</strong>

Проблемные таблицы и списки

Используйте <template> для обёртывания элементов, которые не могут находиться в HTML отдельно:

<tr>, <td>, <th>, <thead>, <tbody>, <tfoot>, <colgroup>, <caption>, <col> и <li>.

Вот пример внеполосной замены строки таблицы, обёрнутой таким образом:

<div>
    ...
</div>
<template>
    <tr id="row" hx-swap-oob="true">
        ...
    </tr>
</template>

Обратите внимание, что эти теги шаблона будут удалены из итогового содержимого страницы.

Непростые SVG

Дочерним элементам SVG требуется пространство имён SVG.

Оберните их в <template><svg>, чтобы браузер применил правильное пространство имён.

Вот пример внеполосной замены элементов SVG, обёрнутых таким образом:

<div>
    ...
</div>
<template><svg>
    <circle hx-swap-oob="true" id="circle1" r="35" cx="50" cy="50" fill="red" /> 
</svg></template>
<template><svg hx-swap-oob="beforebegin:#circle1">
    <circle id="circle2" r="45" cx="50" cy="50" fill="blue" /> 
</svg></template>

Элемент circle1 будет заменён встроенным способом, а затем circle2 будет вставлен перед circle1.

Обратите внимание, что эти теги-обёртки template и svg будут удалены из итогового содержимого страницы.

Вложенные внеполосные замены

По умолчанию htmx обрабатывает каждый элемент hx-swap-oob в ответе, включая элементы, вложенные в основное содержимое.

Это может удалить вложенные фрагменты шаблонов, которые должны остаться при основной замене.

Установите htmx.config.allowNestedOobSwaps в значение false, чтобы обрабатывать только OOB-элементы, расположенные рядом с основным содержимым.

Атрибуты вложенных OOB-элементов удаляются, но сами элементы не заменяются.

Поведение при пустом ответе

По умолчанию ответ, содержащий только OOB-элементы, не приводит к пустой основной замене.

Чтобы разрешить пустую основную замену после извлечения OOB-элементов, установите htmx.config.allowEmptySwapAfterOOB в значение true или используйте модификатор swapEmpty для отдельного элемента:

<form hx-post="/submit" hx-swap="outerHTML swapEmpty:true">

<hx-partial> всегда предотвращает пустую основную замену независимо от настройки allowEmptySwapAfterOOB. Частичные ответы предназначены для чёткого разделения ответа, при котором сервер явно управляет тем, что и куда заменяется.

См. также

  • <hx-partial> — альтернатива для обновления нескольких целевых элементов с явным управлением выбором целей и стратегией замены

Licensed under the Zero-Clause BSD License.
https://four.htmx.org/reference/attributes/hx-swap-oob/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API