这会告诉浏览器:当用户点击此 div 时,向 /messages 发出 PUT 请求并将响应加载到 div 。
触发请求
默认情况下,AJAX 请求由元素的 自然 事件触发:
- input、textarea? 和select? 在change 事件上触发 。
- form 在提交事件上触发 。
- 其他元素都由click 事件触发 。
比如下面的一段代码表示在鼠标进入时触发到 /mouse_entered 的 POST 请求:
<pre class="prettyprint hljs xml" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div hx-post="/mouse_entered" hx-trigger="mouseenter">[Here Mouse, Mouse!]</div></pre>
HTMX 还有很多使用的方式,可以前往官方文档 https://htmx.org/docs/ 了解更多 。示例下面我们用几个示例来简单说明下 htmx 是如何使用的 。
点击加载数据这个例子展示了如何在数据表格中实现点击加载下一页,关键是最后一行:
<pre class="prettyprint hljs xml" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><tr id="replaceMe"><td colspan="3"><button class='btn' hx-get="/contacts/?page=2"hx-target="#replaceMe"hx-swap="outerHTML">Load More Agents... <img class="htmx-indicator" src=https://www.isolves.com/it/cxkf/bk/2022-07-18/"/img/bars.svg">
该行包含一个按钮,该按钮将用下一页结果替换整行(其中将包含一个用于加载下一页结果的按钮) 。文章插图
当点击 Load More Agents... 按钮后会加载一页数据附加到表格中去 。
延迟加载这个例子展示了如何在页面上延迟加载元素 。我们从如下所示的初始状态开始:
【不使用 Javascript 也可以和浏览器进行交互?】
<pre class="prettyprint hljs xml" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div hx-get="/graph" hx-trigger="load"><imgalt="Result loading..." class="htmx-indicator" width="150" src=https://www.isolves.com/it/cxkf/bk/2022-07-18/"/img/bars.svg"/>
<pre class="prettyprint hljs css" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">.htmx-settling img {opacity: 0;}img { transition: opacity 300ms ease-in;}</pre>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 11款常用浏览器横评:Edge最强 傲游不输Chrome
- 盘点2022年还能使用的国内外免备案CDN加速
- 刀|张小泉总经理称中国人切菜方法不对 或推专用刀:其它品牌刀能拍蒜吗?揭秘了
- 刀|张小泉总经理称国人切菜方法不对 网友反驳:你家以后只卖给米其林吧
- 华为|余承东:工作中从不计较个人利益 为公司多做奉献
- 小龙虾|外卖小龙虾缺斤少两、图文不符?饿了么推小龙虾外卖新规
- 网友热议|菜刀拍蒜断掉!张小泉总经理称中国人切菜方法不对被扒出 网友开启吐槽模式
- 哪些人不宜食用葡萄干面包?葡萄干面包的副作用有哪些?
- 哪些人不宜食用果味奶?果味奶的副作用有哪些?
- 哪些人不宜食用山楂饼?山楂饼的副作用有哪些?