方法 - htmx.toggleClass()

htmx.toggleClass 是 HTMX 提供的一个客户端指令(client-side directive),用于在事件触发时切换(toggle)一个或多个 CSS 类名,而无需发送请求或写额外的 JavaScript 代码。

这属于 HTMX 的扩展行为(HX 属性或响应 header),可以直接在 HTML 中使用。相当于原生 JavaScript 中的 element.classList.toggle()。

参数

  • elt - 切换类的元素
  • class - 要切换的类名

使用方式

在 HTML 中使用

<button hx-get="/some-url" hx-target="#box" hx-swap="none" hx-toggle-class="active">切换样式</button>

在响应头中使用

HX-Toggle-Class: active on #box

在JavaScript 中使用

  // toggles the selected class on tab2
  htmx.toggleClass(htmx.find("#tab2"), "selected");

示例代码

<style>
  .highlight {
    background-color: yellow;
    border: 2px solid orange;
  }
</style>

<button 
  hx-get="/toggle" 
  hx-target="#box" 
  hx-swap="none" 
  hx-toggle-class="highlight on #box">
  切换高亮
</button>

<div id="box" class="p-2">
  我是目标内容区域
</div>

在这个例子中,当点击按钮时,发送 GET 请求到 /api,因为 hx-swap="none",不会更新内容,但由于有 hx-toggle-class="highlight on #box",HTMX 会切换 #box 元素上的 highlight 类,相当于触发了 document.querySelector('#box').classList.toggle('highlight')。

属性语法说明

hx-toggle-class="类名1 类名2 ... on 选择器"

多个类名用空格分隔,多个目标用逗号分隔:

hx-toggle-class="open active on #panel, .menu"