Vue切换div显示隐藏,多选,单选代码解析


Posted in Javascript onJuly 14, 2020

切换div显示隐藏

1)单个item下的部分dom结构,显示或隐藏切换,不会修改其它同级dom的显示/隐藏

template dom结构

<div class="list-item" v-for="(list,index) in jobList">
          <p class="job-name">{{list.jobName}}</p>
          <p class="job-info">
            <el-checkbox v-model="list.checked" @change="checkOne(index)"></el-checkbox>
            <span class="info">{{list.locationDesc}} {{list.minDegreeDesc}}及以上  {{list.minExp}}年以上 {{list.jobMinSalary}}-{{list.jobMaxSalary}}</span>
            <span class="time">发布时间:{{list.refreshTime}}</span>   
            <span class="desc" @click="toggle(index)">查看职位描述
              <i class="up"  v-if = "list.show"></i>
              <i class="down"  v-if = "!list.show"></i>
            </span>          
          </p>
          <div class="desc-info" v-if = "list.show">
            {{list.jobDesc}}
          </div>
        </div>

script js

<script>
import api from '@/axios/api'
export default {
  name: 'jobImport',
  data(){
    return{ 
      companyName:'',
      checkedAll:false, 
      isShow: true,
      checkedNum:0,
      num:'-1',
      jobList:[
        {name:"销售总监1"},
        {name:"销售总监2"},
        {name:"销售总监3"},
        {name:"销售总监4"},
        {name:"销售总监5"},
        {name:"销售总监6"},
        {name:"销售总监7"}
      ],}
    },
    mounted() {
      for(let key in this.jobList){
       this.jobList[key].checked = false;
       this.jobList[key].show = false;
      } 
    },

methods:{



toggle(index){
      
this.jobList[index].show = !this.jobList[index].show;
      
this.jobList.splice(index,1,this.jobList[index]); //当你利用索引直接设置一个项时,Vue 不能检测变动的数组,你可以使用 splice()解决
      }

  }
}

less 样式

.list-item{
          padding-top:20px;          
          .job-name{
            font-size:16px;
            color:#333333;
            font-weight: 800;
          }
          .job-info{
            margin-top: 12px;
            padding-bottom:20px;
            border-bottom: 1px dashed #eeeeee;
            font-size:14px;
            color:#333333;
            .info{
              margin-left: 10px;
            }
            .time{
              margin-left: 130px;
            }
            
          }
          .desc{
            float: right;
            color:#ff6500;
            cursor: pointer;
            .up{
              display: inline-block;
              margin-left: 12px;
              vertical-align: middle; 
              width: 11px;
              height: 6px;
              background: url("../img/icon_up.png") no-repeat;
             }
             .down{
              display: inline-block;
              margin-left: 12px;
              vertical-align: middle;
              width: 11px;
              height: 6px;
              background: url("../img/icon_down.png") no-repeat;
             }
          }
          .desc-info{
            padding: 12px; 
            background: #f8f9fb;
          }
        }

2)单个item,显示或隐藏切换,会修改其它同级dom的显示/隐藏。利用vue的计算属性computed 单选,单击选中,选中后,再点击无法取消

template dom结构

choosed 选中样式

span{
            display: inline-block; 
            padding-left:10px;
            padding-right: 10px;
            margin-bottom: 10px;
            margin-left: 5px;
            margin-right: 5px;
            min-width:44px;
            height:26px;
            text-align: center;
            line-height: 26px;
            color:#333;
            font-size:14px; 
            cursor: pointer;
            &.choosed{
              background:#ff6500;
              border-radius:2px;
              color: #fff;
            }
          }
<div class="right hotcity-box">
  <span v-for="(city,index) in city" @click="handleChoose(index)" :class="{'choosed':cityNum == index}">{{city.cityName}}</span> </div>

script js

export default {
  name: 'search',
  data(){
      cityIndexNum:0,
      city:[
        {"cityName": '北京', "value": '1'},
      {"cityName": '上海', "value": '2'},
      
{"cityName": '广州', "value": '3'},
      
{"cityName": '深圳', "value": '4'},
      
{"cityName": '天津', "value": '5'}
       ]
    },
    methods:{
       handleChoose(index){ 
    

this.cityIndexNum = index;
       }     
    },
    computed:{
      cityNum(){
       return this.cityIndexNum;
      }
    }
}

2)单个item,显示或隐藏切换,会修改其它同级dom的显示/隐藏。 多选,单击选中,选中后,再点击,取消选中

template dom结构

 <div class="right more"> 
            <span v-for="(item, index) in exptIndustry" @click="handleChoose($event,index)" :class="{'choosed':item.ischeck}">{{item.fullName}}</span>
          </div>

js

data(){
    return {
       industryIndexNum:0,




 exptIndustry: [
                    {
                        "simpleName": "互联网1",
                        "fullName": "互联网1",
                        "value": "1",
                        "defaultName": "互联网1"
                    },







{
                        "simpleName": "互联网2",
                        "fullName": "互联网3",
                        "value": "2",
                        "defaultName": "互联网3"
                    }





]


    }
},
methods:{
  handleChoose(e,index){ //再次点击,取消选中状态
          if (e.target.className.indexOf("choosed") == -1) {
            e.target.className = "choosed"; //切换按钮样式 
          } else {
            e.target.className = "";//切换按钮样式 
          }
          if(index==-1){
            this.industryDataInit();
          }else{
            let check = this.exptIndustry[index].ischeck;
            this.exptIndustry[index].ischeck = !check; 
            console.log(this.exptIndustry[index].ischeck)
          } 
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery中对表单的基本操作代码
Jul 29 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
May 29 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 #Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 #Javascript
详解javascript void(0)
Jul 13 #Javascript
Vue组件间数据传递的方式(3种)
Jul 13 #Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 #Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 #Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 #Javascript
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php 一元分词算法
2009/11/30 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
如何执行一个shell程序
2012/11/23 面试题
两则小学生的自我评价分享
2013/11/14 职场文书
献爱心标语
2014/06/21 职场文书
财务工作检讨书
2014/10/29 职场文书
2014年教育工作总结
2014/11/26 职场文书
销售会议开幕词
2015/01/28 职场文书
创卫工作总结2015
2015/04/22 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android