hx-include
此hx-include属性允许您在 AJAX 请求中包含其他元素值。此属性的值可以是:
- 要包含的元素的 CSS 查询选择器。
- this它将包括元素的后代。
- closest <CSS selector> 它将找到 与给定的 CSS 选择器匹配的最近的closest tr祖先元素或其自身(例如,将定位到离元素最近的表行)。
- find <CSS selector> 它将找到与给定的 CSS 选择器匹配的第一个子后代元素。
- next <CSS selector> 它将向前扫描 DOM 以查找与给定 CSS 选择器匹配的第一个元素。(例如,next .error将定位到具有类的最近的以下同级元素error)
- previous <CSS selector> 它将向后扫描 DOM 以查找与给定 CSS 选择器匹配的第一个元素。(例如,previous .error将定位到具有类的最近的前一个兄弟元素error) 以下是包含单独输入值的示例:
<div>
<button hx-post="/register" hx-include="[name='email']">
Register!
</button>
Enter email: <input name="email" type="email"/>
</div>
这有点做作,因为您通常会将这两个元素都放在一起form并自动提交值,但它演示了这个概念。
请注意,如果包含非输入元素,则该元素中包含的所有输入元素都将被包含。
笔记
- hx-include可以继承并放置在父元素上
- 虽然是继承的,但它是从触发请求的元素进行评估的。使用扩展选择器(如和)hx-include 时很容易混淆。find closest
<div hx-include="find input">
<button hx-post="/register">
Register!
</button>
Enter email: <input name="email" type="email"/>
</div>
在上面的例子中,当单击按钮时,find input选择器从按钮本身解析,这里不会返回任何元素,因为按钮没有任何子input元素,因此在这种情况下会引发错误。
- 标准 CSS 选择器解析为 document.querySelectorAll 并将包含多个元素,而扩展选择器(如find或 )next 最多只返回一个元素以包含