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 相关文章推荐
用js实现计算代码行数的简单方法附代码
Aug 13 Javascript
jQuery学习5 jQuery事件模型
Feb 07 Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
EditPlus中的正则表达式 实战(2)
Dec 15 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
JS数据类型判断的几种常用方法
Jul 07 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
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
php whois查询API制作方法
2011/06/23 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php实现的顺序线性表示例
2019/05/04 PHP
学习ExtJS border布局
2009/10/08 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
常用jQuery代码分享
2015/07/14 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
Vue中使用vux的配置详解
2017/05/05 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
js回调函数仿360开机
2019/12/26 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
python退出循环的方法
2020/06/18 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
大学生毕业自荐信
2013/10/10 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
法院个人总结
2015/03/03 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS