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

AlpineJS中option标签用什么x-on指令?@click绑定不生效如何处理

问题原因

原生<option>标签本身不支持click事件,浏览器规范中点击下拉选项的交互会直接触发父级<select>的change事件,因此绑定在option上的@click不会生效,也没有专门绑定在option上的@selected类指令可直接使用。

实现方案

你可以通过给<select>绑定@change事件,判断当前选中值的方式触发对应操作,以下是可直接运行的修正代码:

<html>
  <head>
    <script defer src="https://unpkg.com/alpinejs@3.3.4/dist/cdn.min.js"></script>
  </head>
  <body>
    <div x-data="{}">
        <select @change="
          const val = $event.target.value;
          val === '1' ? alert('option 1') : 
          val === '2' ? alert('option 2') : 
          alert('option 3');
        ">
            <option value="1">option 1</option>
            <option value="2">option 2</option>
            <option value="3">option 3</option>
        </select>
        <button @click="alert('button clicked');">Click</button>
    </div>
  </body>
</html>

如果业务逻辑比较复杂,也可以用x-model绑定选中值,在状态变化时执行对应逻辑:

<div x-data="{selected: ''}">
  <select x-model="selected">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>
  </select>
  <!-- 选中值变化时自动触发对应操作 -->
  <div x-effect="
    selected === '1' && alert('option 1选中');
    selected === '2' && alert('option 2选中');
    selected === '3' && alert('option 3选中');
  "></div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:02