hx-disinherit
htmx 的默认行为是自动 “inherit” 许多属性:也就是说,可以将诸如 hx-target 之类的属性放在父元素上,并且所有子元素都将继承该目标。
¥The default behavior for htmx is to “inherit” many attributes automatically: that is, an attribute such as hx-target may be placed on a parent element, and all child elements will inherit that target.
hx-disinherit
属性允许你控制此自动属性继承。一个示例场景是允许你将 hx-boost
放置在页面的 body
元素上,但在页面的特定部分覆盖该行为以允许更具体的行为。
¥The hx-disinherit
attribute allows you to control this automatic attribute inheritance. An example scenario is to
allow you to place an hx-boost
on the body
element of a page, but overriding that behavior in a specific part
of the page to allow for more specific behaviors.
htmx 评估属性继承的方式如下:
¥htmx evaluates attribute inheritance as follows:
当 hx-disinherit
设置在父节点上时
¥when hx-disinherit
is set on a parent node
hx-disinherit="*"
此元素的所有属性继承将被禁用
¥hx-disinherit="*"
all attribute inheritance for this element will be disabled
hx-disinherit="hx-select hx-get hx-target"
仅对一个或多个指定属性禁用继承
¥hx-disinherit="hx-select hx-get hx-target"
disable inheritance for only one or multiple specified attributes
<div hx-boost="true" hx-select="#content" hx-target="#content" hx-disinherit="*">
<a href="/page1">Go To Page 1</a> <!-- boosted with the attribute settings above -->
<a href="/page2" hx-boost="unset">Go To Page 1</a> <!-- not boosted -->
<button hx-get="/test" hx-target="this"></button> <!-- hx-select is not inherited -->
</div>
<div hx-boost="true" hx-select="#content" hx-target="#content" hx-disinherit="hx-target">
<!-- hx-select is automatically set to parent's value; hx-target is not inherited -->
<button hx-get="/test"></button>
</div>
<div hx-select="#content">
<div hx-boost="true" hx-target="#content" hx-disinherit="hx-select">
<!-- hx-target is automatically inherited from parent's value -->
<!-- hx-select is not inherited, because the direct parent does
disables inheritance, despite not specifying hx-select itself -->
<button hx-get="/test"></button>
</div>
</div>
¥Notes
阅读有关 属性继承 的更多信息
¥Read more about Attribute Inheritance