You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte中on:click为HTML元素添加类的问题(内联写法失效)

在Svelte中点击元素内联添加类的解决方法

你的代码无法工作是因为Svelte内联事件处理里的this并不会指向当前DOM元素,下面提供几种可行的解决方式:

方法一:通过事件对象操作元素

直接利用事件参数的currentTarget属性获取当前点击的元素,再添加类:

<li on:click={(e) => e.currentTarget.classList.add('active')}>First</li>

方法二:绑定DOM元素到变量(更易复用)

如果后续需要多次操作该元素,可以先把元素绑定到组件变量:

<script>
  let listItem;
</script>

<li bind:this={listItem} on:click={() => listItem.classList.add('active')}>First</li>

方法三:用Svelte响应式类绑定(推荐)

Svelte更推荐通过响应式变量控制类名,无需手动操作DOM,更符合框架逻辑:

<script>
  let isActive = false;
</script>

<li on:click={() => isActive = true} class:active={isActive}>First</li>

这种方式会自动根据isActive的值为元素添加或移除active类。

内容的提问来源于stack exchange,提问作者jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:35:46