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 相关文章推荐
Javascript valueOf 使用方法
Dec 28 Javascript
js输出列表实现代码
Sep 12 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
高效Web开发的10个jQuery代码片段
Jul 22 Javascript
微信小程序--组件(swiper)详细介绍
Jun 13 Javascript
详解webpack + vue + node 打造单页面(入门篇)
Sep 23 Javascript
微信小程序-getUserInfo回调的实例详解
Oct 27 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 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采集中国代理服务器网的方法
2015/06/16 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
基于jquery的滑动样例代码
2010/11/20 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
Python fileinput模块使用实例
2015/05/28 Python
python opencv实现图像边缘检测
2019/04/29 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
单身联谊活动方案
2014/01/29 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
全民创业工作总结
2015/08/13 职场文书