Vue ElementUI el-dropdown 添加选中icon效果

直接上效果:

注意 el-dropdown 是动态生成,在开发者工具里可以看到渲染完后的 Dom 其实是 一个 ul :

注意 el-dropdown-item 中的 group 是自定义属性,用于分组显示。

代码第 5/6 和 7/8 行是有无 icon 的区别,根据 group 属性值做分组显示。

<!--下拉列表  -->
<el-dropdown class="dropdown-btn" @command="onCommand" :hide-on-click="false">
    <span class="el-dropdown-link">...</span>
    <el-dropdown-menu slot="dropdown">
        <el-dropdown-item group="02" v-show="groupId=='02'" command="morning">上午</el-dropdown-item>
        <el-dropdown-item group="01" v-show="groupId=='01'" command="morning" icon="custom-icon el-icon-check" >上午</el-dropdown-item>
        <el-dropdown-item group="01" v-show="groupId=='01'" command="afternoon" >下午</el-dropdown-item>
        <el-dropdown-item group="02" v-show="groupId=='02'" command="afternoon" icon="custom-icon el-icon-check">下午</el-dropdown-item>
    </el-dropdown-menu>
</el-dropdown>

使用 command 指令事件做显示切换:

onCommand(command) {
    // 是否选中上午
    let isMorning = command === 'morning' ? true : false;
    // 当前点击的 下拉菜单 item 对象,注意是 arguments 第二个参数
    let dropItem = arguments[1];
    // 获取菜单的HTML id,其实就是 ul 的 id
    let menuId = dropItem.$parent.$el.id
    // 获取 li 列表
    let menuList = document.getElementById(menuId).getElementsByTagName('li');
    menuList.forEach(li => {
        // group 是自定义属性
        let group = li.getAttribute('group');
        // 是“上午”且group=01,或 是“下午”且group=02 时显示 li
        if((isMorning && group === '01' || (!isMorning && group === '02'))) {
            li.style.display = ''
        }
        else {
            li.style.display = 'none'
        }
    });
}

完整代码,这是一个 vue 文件

<template>
    <div class="dropdown-main">
<!--下拉列表  -->
<el-dropdown class="dropdown-btn" @command="onCommand" :hide-on-click="false">
    <span class="el-dropdown-link">...</span>
    <el-dropdown-menu slot="dropdown">
        <el-dropdown-item group="02" v-show="groupId=='02'" command="morning">上午</el-dropdown-item>
        <el-dropdown-item group="01" v-show="groupId=='01'" command="morning" icon="custom-icon el-icon-check" >上午</el-dropdown-item>
        <el-dropdown-item group="01" v-show="groupId=='01'" command="afternoon" >下午</el-dropdown-item>
        <el-dropdown-item group="02" v-show="groupId=='02'" command="afternoon" icon="custom-icon el-icon-check">下午</el-dropdown-item>
    </el-dropdown-menu>
</el-dropdown>
    </div>
</template>
<script>
export default {
    data() {
        return {
            groupId: '01'
        }
    },
    methods: {
        onCommand(command) {
            // 是否选中上午
            let isMorning = command === 'morning' ? true : false;
            // 当前点击的 下拉菜单 item 对象,注意是 arguments 第二个参数
            let dropItem = arguments[1];
            // 获取菜单的HTML id,其实就是 ul 的 id
            let menuId = dropItem.$parent.$el.id
            // 获取 li 列表
            let menuList = document.getElementById(menuId).getElementsByTagName('li');
            menuList.forEach(li => {
                // group 是自定义属性
                let group = li.getAttribute('group');
                // 是“上午”且group=01,或 是“下午”且group=02 时显示 li
                if((isMorning && group === '01' || (!isMorning && group === '02'))) {
                    li.style.display = ''
                }
                else {
                    li.style.display = 'none'
                }
            });
        }
    }
}
</script>
<style lang="stylus" scoped>
.el-dropdown-link {
    cursor pointer    
}
.dropdown-main {
    padding: 40px;    
}
</style>
<style lang="stylus">
.custom-icon {
    float:right;
    margin-top: 10px;
}
.el-dropdown-menu__item {// 其实就是 li
    width:80px;
    padding: 0 15px;
}
</style>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Vue指令`v-show`或者`v-if`来控制`el-dropdown-menu`的显示与隐藏。 使用`v-show`指令,示例代码如下: ``` <el-dropdown> <span class="el-dropdown-link"> 下拉菜单<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu v-show="showDropdown"> <el-dropdown-item>菜单项一</el-dropdown-item> <el-dropdown-item>菜单项二</el-dropdown-item> <el-dropdown-item>菜单项三</el-dropdown-item> </el-dropdown-menu> </el-dropdown> ``` 在Vue组件中定义`showDropdown`变量,来控制`el-dropdown-menu`的显示与隐藏: ``` <template> <el-dropdown> <span class="el-dropdown-link" @click="showDropdown = !showDropdown"> 下拉菜单<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu v-show="showDropdown"> <el-dropdown-item>菜单项一</el-dropdown-item> <el-dropdown-item>菜单项二</el-dropdown-item> <el-dropdown-item>菜单项三</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> <script> export default { data() { return { showDropdown: false }; } }; </script> ``` 使用`v-if`指令的示例代码如下: ``` <el-dropdown> <span class="el-dropdown-link"> 下拉菜单<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu v-if="showDropdown"> <el-dropdown-item>菜单项一</el-dropdown-item> <el-dropdown-item>菜单项二</el-dropdown-item> <el-dropdown-item>菜单项三</el-dropdown-item> </el-dropdown-menu> </el-dropdown> ``` 在Vue组件中定义`showDropdown`变量,来控制`el-dropdown-menu`的显示与隐藏: ``` <template> <el-dropdown> <span class="el-dropdown-link" @click="showDropdown = !showDropdown"> 下拉菜单<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu v-if="showDropdown"> <el-dropdown-item>菜单项一</el-dropdown-item> <el-dropdown-item>菜单项二</el-dropdown-item> <el-dropdown-item>菜单项三</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> <script> export default { data() { return { showDropdown: false }; } }; </script> ``` 以上是两种常用的控制`el-dropdown-menu`显示与隐藏的方法,具体使用哪种方法,可以根据实际需求来选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值