vue | vue实现列表同时展开与单独展开
需求:每个li标签在点击的时候,都同时展开。
但是碰见几个问题:
1、如果点第一个li 所有li都会展开;
2、点击第一个li,第一个li展开,点击第二个li,第一个li闭合,第二个li展开
这两种情况都与预期不符,我们要求,点击第一个li展开,点击第二个li第一个li不闭合,第二个li展开,依次类推。
1、2是使用了v-show="activeIndex==index"导致的,因为数据是v-for遍历的,而activeIndex不是每个li私有的,是每个li公用的。
那么问题来了,如何解决呢?
说到私有,那就要用v-for=“(item,index) in arr” 中index去表示私有,使用:ref="index"去表示用户点击是当前的li。
html
<div id="demo" >
<ul>
<li v-for="(item,index) in arr" @click="clickItem(index)" :ref="index">
{{item}}
<p style="display: none">123</p>
</li>
</ul>
</div>
vue
new Vue({
el: "#demo",
data: {
flag:true,
arr:["和","啊","嗯","哦"],
},
methods:{
clickItem(index){
if (this.$refs[index][0].childNodes[1].style.display=="none") {
this.$refs[index][0].childNodes[1].style.display="block"
}else if (this.$refs[index][0].childNodes[1].style.display=="block") {
this.$refs[index][0].childNodes[1].style.display="none"
}
console.log(this.$refs[index][0].childNodes[1].style.display);
}
}
})
这样就能实现每个li标签在点击的时候,可同时展开的效果了。
///////////////////////////////////////////////////////////////////////
顺便写一下点击第一个li,第一个li展开,点击第二个li,第一个li闭合,第二个li展开的代码
html
<div id="demo">
<ul>
<li v-for="(item,index) in arr" @click="clickItem(index)">
{{item}}
<p v-show="index==limit">123</p>
</li>
</ul>
</div>
css
new Vue({
el: "#demo",
data: {
limit:-1,
arr:[1,2,3,4]
},
methods:{
clickItem(index){
if (index==this.limit) {
this.limit=-1
}else{
this.limit=index;
}
}
}
})
vue | vue实现列表同时展开与单独展开的更多相关文章
- 用Vue实现状态列表的操作涵盖所有的知识点
用Vue实现状态列表的操作涵盖所有的知识点
- webpack4对第三方库css,项目全局css和vue内联css文件提取到单独的文件(二十二)
在讲解提取css之前,我们先看下项目的架构如下结构: ### 目录结构如下: demo1 # 工程名 | |--- dist # 打包后生成的目录文件 | |--- node_modules # 所有 ...
- django rest_framework vue 实现用户列表分页
django rest_framework vue 实现用户列表分页 后端 配置urls # 导入view from api.appview.userListView import userListV ...
- Vue.js的列表数据的同步更新方法
这次给大家带来Vue.js的列表数据的同步更新方法,Vue.js列表数据同步更新方法的注意事项有哪些,下面就是实战案例,一起来看一下. 数组的 push(),pop(),shift(),unshift ...
- vue 中后台 列表的增删改查同一解决方案
查看 & 查询 常⻅业务列表⻚都是由 搜索栏 和 数据列表 组成. 其中: 搜索栏包含 搜索条件 . 新增 . 批量xx . 导出 等对 数据列表 全局操作功能项. 数据列表包含 分⻚ 和每条 ...
- Javascript - Vue - vue对象
vue提供了一整套前端解决方案,可以提升企业开发效率 vue的处理过程 app.js 项目入口,所有请求最先进入此模块进行处理 route.js 由app.js调用,处理路由的分发 controlle ...
- Vue - vue.js 常用指令
Vue - vue.js 常用指令 目录: 一. vuejs模板语法之常用指令 1. 常用指令: v-html 2. 常用指令: v-text 3. 常用指令: v-for 4. 常用指令: v-if ...
- 前端开发 Vue Vue.js和Nodejs的关系
首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...
- [Vue] : Vue概述
什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架. Vue.js 是前端的主流框架之一,和Angular.js.React.js 一起,并成为前端三大主流框 ...
随机推荐
- 对拍(C++)
对拍(C++) 对拍是什么 众所周知,当我们正在考试敲代码的时候,每一道题,都会有某种正解能拿到满分:当我们想不出正解时,我们往往可以打暴力代码来骗分. 但是,当我们有思路写正解,但又担心自己 ...
- 动态数组java实现
数组是一种顺序存储的线性表,所有元素的内存地址是连续的. 动态数组相对于一般数组的优势是可以灵活地添加或删除元素.而一般数组则受限于固定的内存空间.只能有限的添加元素 动态数组(Dynamic Arr ...
- app_error_weak.c, 108, Mesh assert at 0x0002EFFE (:0)
在调试light_switch_server_nrf52840_xxAA_s140_7.0.1的时候出现<t: 10664>, app_error_weak.c, 108, M ...
- linux下的scp传输文件
转载于:http://moyu2010.blog.163.com/blog/static/177439041201112710243064/,再次谢谢作者. 1.功能说明scp就是security c ...
- day35:线程队列&进程池和线程池&回调函数&协程
目录 1.线程队列 2.进程池和线程池 3.回调函数 4.协程:线程的具体实现 5.利用协程爬取数据 线程队列 1.线程队列的基本方法 put 存 get 取 put_nowait 存,超出了队列长度 ...
- YouCompleteMe unavailable: requires Vim compiled with Python 2.x support
问题:YouCompleteMe unavailable: requires Vim compiled with Python 2.x support 解决:重新编译,加入--enable-pytho ...
- Intelligence Beyond the Edge: Inference on Intermittent Embedded Systems
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. Abstract 能量收集技术为未来的物联网应用提供了一个很有前景的平台.然而,由于这些 ...
- IDEA下Maven项目搭建踩坑记----3.最长的bug,最简单的错误。同一类中,部分函数的@AutoWired注入的对象失效
这个错误绝对是我写到现在为止最傻X的一个错误,先上图 问题: 出了一个特别长的错误,大致的意思就是mapper.xml文件注入Dao层的时候失败. 解决: 查看一下错误的位置→ 找到Dao层 找到错误 ...
- Vue 开发技巧总结
博客地址:https://ainyi.com/95 本人玩了 Vue 两年多,在此总结一下开发时的一些技巧和方法 自定义组件 v-model v-model 是 Vue 提供的一个语法糖,它本质上是 ...
- day03 每日一行
day03 每日一行 问题描述 用列表解释式 .生成器表达式实现 字典列表为: [{'first': 'john', 'last': 'smith', 'email': 'jsmith@exsampl ...