html中radio实现互斥

在这里插入图片描述

在Vue实现菜单栏的互斥效果可以使用v-model来实现,具体实现步骤如下: 1. 在每个菜单项设置一个唯一的标识符id。 2. 在菜单项的父组件定义一个data属性,用来记录当前选项的id。 3. 在每个菜单项绑定v-model,将当前菜单项的id与选项的id绑定。 4. 在选项id的setter函数,判断当前选项的id是否与之前选项的id相同,如果不同则取消之前选项的选状态,将当前选项设置为选状态。 下面是示例代码: ```html <template> <div> <div v-for="item in menuList" :key="item.id"> <input type="radio" :id="'menu_'+item.id" :value="item.id" v-model="selectedId"/> <label :for="'menu_'+item.id">{{ item.name }}</label> </div> </div> </template> <script> export default { data() { return { menuList: [ { id: 1, name: '菜单项1' }, { id: 2, name: '菜单项2' }, { id: 3, name: '菜单项3' }, ], selectedId: null } }, watch: { selectedId(newVal, oldVal) { if (newVal !== oldVal) { // 取消之前选项的选状态 const oldSelected = document.querySelector(`#menu_${oldVal}`); oldSelected.checked = false; // 设置当前选项为选状态 const newSelected = document.querySelector(`#menu_${newVal}`); newSelected.checked = true; } } } } </script> ``` 在上面的代码,我们通过v-model将菜单项的id与选项的id进行了绑定,然后在watch监听选项的id的变化,根据变化来取消之前选项的选状态,将当前选项设置为选状态。这样就可以实现菜单栏的互斥效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值