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>
如果您需要在该 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 属性明确使用继承。