HTMX - 属性继承



在大多数情况下,HTMX 属性都是继承的,如果您在父元素上应用任何属性,那么在大多数情况下(在感觉需要的情况下),子元素将自动继承该属性的行为。

该属性继承允许您将属性提升到 DOM,以便避免代码重复。正如您在下面的代码示例中所看到的:

使用属性继承避免代码重复

在这里,我们将有两个元素,并且一个属性会通用,即 hx-confirm 向用户显示确认对话框。

<button hx-delete="/account" hx-confirm="Are you sure?">
 Delete My Account
</button>
<button hx-put="/account" hx-confirm="Are you sure?">
 Update My Account
</button>

因此,我们可以将这两个元素包装在父元素内,并在父元素上使用 hx-confirm 属性。

<div hx-confirm="Are you sure?">
    <button hx-delete="/account">
 Delete My Account
    </button>
    <button hx-put="/account">
 Update My Account
    </button>
</div>

如果您需要在那其中添加一个或多个子元素,而您不希望该子元素继承父元素的行为。那么您只需在 hx-confirm 属性上添加 unset 值即可。

<div hx-confirm="Are you sure?">
    <button hx-delete="/account">
 Delete My Account
    </button>
    <button hx-put="/account">
 Update My Account
    </button>
    <button hx-confirm="unset" hx-get="/">
 Cancel
    </button>
</div>

禁用属性继承

可以使用 hx-disinherit 属性在元素和属性基础上分别禁用属性继承。

要完全禁用属性继承,您需要将 htmx.config.disableInheritance 配置变量设置为 true。这将禁用继承,并让您通过使用 hx-inherit 属性显式使用继承。

广告