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实现两个值相加alert出来精确到指定位
Sep 25 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
JavaScript九九乘法口诀表的简单实现
Oct 04 Javascript
几种tab切换详解
Feb 03 Javascript
vue.js实现含搜索的多种复选框(附源码)
Mar 23 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
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
Protoss魔法科技
2020/03/14 星际争霸
php的字符串用法小结
2010/06/08 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
js获取class的所有元素
2013/03/28 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
详解Django框架中的视图级缓存
2015/07/23 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python多线程的退出控制实现
2020/08/10 Python
函授毕业生自我鉴定范文
2014/03/25 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python