选项卡(使用 JavaScript)
此示例展示了如何使用 htmx 加载选项卡内容,以及如何使用 Javascript 选择“活动”选项卡。这通过将重新呈现选项卡 HTML 的部分工作从应用服务器转移到客户端浏览器来减少一些重复。
你还可以考虑一种更惯用的方法,即遵循超文本作为应用程序状态引擎的原则。
示例代码
下面的 HTML 显示了选项卡列表,并添加了 HTMX 以从服务器动态加载每个选项卡标签。一个简单的 JavaScript 事件处理程序使用 take 函数在将内容交换到 DOM 中时切换选定的选项卡。
<div id="tabs" hx-target="#tab-contents" role="tablist"
hx-on:htmx-after-on-load="let currentTab = document.querySelector('[aria-selected=true]');
currentTab.setAttribute('aria-selected', 'false')
currentTab.classList.remove('selected')
let newTab = event.target
newTab.setAttribute('aria-selected', 'true')
newTab.classList.add('selected')">
<button role="tab" aria-controls="tab-contents" aria-selected="true" hx-get="/tab1" class="selected">Tab 1</button>
<button role="tab" aria-controls="tab-contents" aria-selected="false" hx-get="/tab2">Tab 2</button>
<button role="tab" aria-controls="tab-contents" aria-selected="false" hx-get="/tab3">Tab 3</button>
</div>
<div id="tab-contents" role="tabpanel" hx-get="/tab1" hx-trigger="load"></div>