vue2.0实现下拉菜单全选和全不选

vue2.0实现下拉菜单全选和全不选

添加时间:2021-03-02 11:02:11
站长推荐丨赞助论坛,可获取海量资源终身免费下载权限奥!
举报 举报
收藏
预览
附件 附件
  • 模板类型模板类型:下拉导航
  • 模板颜色模板颜色:
  • 下载积分下载积分:28 米粒
  • 下载权限下载权限:

    赞助会员

一款简单实用的小插件vue2.0,实现下拉菜单的全选和全部选,可添加多个一级菜单和二级菜单,设置比较简单很容易上手。
vue2.0实现下拉菜单全选和全不选
分类:导航菜单 > 下拉导航 难易:

本示例css样式均写在head部分里,可以自行修改为调用外部样式。

设置好需要显示菜单的元素,之后引入关键的javascript插件:

<div id="app">
    <div class="row">
           <div class="col-sm-3">
               <div class="relatedInstance">
                   <h2>vue2.0实现下拉菜单全选和全不选</h2>
                   <ul>
                       <li id="" v-for="(entity,index) in entities" @click="handleTit(index)">
                           <h3>{{entity.text}}<b  :class="{'checked':allState[index]}" @click.stop="handleTitAll(index)"></b></h3>
                           <ul v-show="entitiesState[index]" @click.stop>
                               <li v-for="(list,listIndex) in entity.child" @click="childHandle(listIndex,index)">
                                   <b :class="{'checked':childState[index][listIndex]}"></b><span>{{list.text}}</span>
                               </li>
                           </ul>
                       </li>
                   </ul>

               </div>
           </div>
       </div>
  </div>
<script src="js/vue.min.js"></script>
<script src="js/vue-resource.js"></script>

实例化一个VUE,并配置菜单列表的内容及相关方法:

var newlist = new Vue({
      el:'#app',
      data:{
        entities:[
          {text:'人员组成',child:[{text:'擎天柱'},{text:'大黄蜂'}]},
          {text:'项目分类',child:[{text:'登月计划'},{text:'星际穿越'}]},
          {text:'合作机构',child:[{text:'航空航天局'},{text:'超物质研究院'}]},
        ],
        entitiesState:[],
        childState:[],
        allState:[],
        listLen:0
        },
        watch:{

        },
        methods:{
          handleTit(i){//点击父级
             let state=this.entitiesState;
             this.$set(state,i,!state[i]);
             for(let a in this.entitiesState){
                 if(a!=i){
                     this.$set(state,a,false);
                 }
             }//增加判断,改变同级的展开状态
          },
          childHandle(i,pi){//单选
             let child=this.childState;
             if(child[pi][i]) this.allState[pi]=false;
             this.$set(child[pi],i,!child[pi][i]);
             if(this.childState[pi][i]) this.checkList(this.childState[pi],pi);
          },
          handleTitAll(pi){//全选
             let child=this.childState[pi],
                 allState=this.allState;
             for(let i=0;i<this.listLen;i++){
                this.$set(child,i,!allState[pi]);
             }
             this.$set(allState,pi,!allState[pi]);
          },
          checkList(child,pi){
             let allState=this.allState,
                 len=this.entities[pi].child.length;
             for(let i=0;i<len;i++){
                if(!child[i]) return;
             }
             this.$set(allState,pi,true);
          }
       },
       created(){
          let len=this.entities.length;
          this.listLen=len;
          for(let i=0;i<len;i++){
             this.$set(this.childState,i,[])
          }
       }
    })
相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:vue2.0实现下拉菜单全选和全不选

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.097521s