在正常的js中。我们如果要实现点击选中active然后其他取消的效果,我们可以定义一个类,当点击的时候给给多有的dom取消active的类,给当前元素加上这个类名,说的很啰嗦,直接来看代码说话吧(表示楼主用的是jq): <style> * { margin: 0; padding: 0; } li { list-style: none; width: 100px; margin-top: 10px; border: 1px solid red; } li:active { cursor: pointer; } .acti 在Vue 2.0中,实现点击选中某一项并使其他项互斥的效果,我们需要遵循Vue的设计哲学,即避免直接操作DOM。Vue提供了一种更优雅的方式,通过数据驱动视图来处理这类问题。在给出的例子中,我们可以通过绑定类名、事件监听和计算属性来实现这个功能。 我们创建一个列表数据,如`classArr`,它包含了多个选项的文本。在Vue组件的`data`选项中定义这个数组: ```javascript data() { return { classArr: ["one", "two", "three"], selectedIndex: -1, // 初始时没有选中项 }; }, ``` 接着,我们编写模板部分。这里使用Pug模板引擎,不过同样可以使用普通的HTML。我们将循环遍历`classArr`,为每个列表项绑定一个`@click`事件处理函数`result(index)`,同时使用`:class`指令根据当前选中项的索引来决定是否添加`active`类: ```pug template(vue-lang="pug") ul li(v-for="(item, index) in classArr", @click="result(index)", :class="selectedIndex === index ? 'active' : ''") | this is {{ item }} ``` 在CSS部分,我们定义`active`类的样式,使其在选中时具有不同的背景颜色: ```css li { list-style: none; width: 100px; margin-top: 10px; border: 1px solid red; &:hover { cursor: pointer; } } .active { background-color: aqua; } ``` 在`methods`选项中,我们定义`result(index)`方法,当点击列表项时,将`selectedIndex`设置为当前被点击项的索引: ```javascript methods: { result(index) { this.selectedIndex = index; }, }, ``` 由于`selectedIndex`的值会随着用户交互而变化,我们可以使用一个计算属性`resultNum`来简化模板中的逻辑。计算属性会根据依赖的数据自动更新,因此在这里我们不需要手动去管理`active`类的状态: ```javascript computed: { resultNum() { return this.selectedIndex; }, } ``` 现在,当用户点击某个列表项时,`result`方法会被调用,`selectedIndex`会更新为相应的索引。这会导致`resultNum`计算属性也更新,进而影响模板中`:class`指令的判断,从而实现只有一项具有`active`类的效果,其他项则取消选中状态。这就是在Vue 2.0中实现点击选中并互斥的一种常见方法。这种方法避免了直接操作DOM,使得代码更简洁,也更符合Vue的编程模式。
- 粉丝: 12
- 资源: 983
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助