满口金牙 2022-04-20 17:03 采纳率: 91.5%
浏览 395
已结题

Vue3 鼠标右键菜单,出来后,怎么让左点击其它地方 关了这个菜单

<div  @click.right="showMenu()" >  </div>   右点击这个div出现菜单,问题是怎么点其它任意地方 关了它,我这样写关不了
   
    <!-- 鼠标右键菜单 -->
    <div  v-show="showMouseMenu">
            <ul >
              <li @click="addElement">增加子元素</li>
              <li @click='removeElement'>删除当前元素</li>
            </ul>
        </div>
    </div>

    function showMenu(){
      data.showMouseMenu = true
      document.addEventListener('click', closeMenu)
    }
    function closeMenu(){ // 取消鼠标监听事件 菜单栏
      data.showMouseMenu = false
      document.removeEventListener('click', closeMenu) // 要及时关掉监听,
    }


请用例句说明,多谢
  • 写回答

5条回答 默认 最新

  • 小草的味道 2022-04-20 18:08
    关注
    
    <!DOCTYPE html>
    <html lang="en">
    
        <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>login</title>
            <style>
                #app {
                    width: 100Vh;
                    height: 100Vw;
                }
            </style>
        </head>
    
        <body>
            <div id="app" @click="showMouseMenu = false">
                <div @mousedown="showMenu($event)"> 右点击这个div出现菜单,问题是怎么点其它任意地方 关了它,我这样写关不了</div>
                <!-- 鼠标右键菜单 -->
                <div v-show="showMouseMenu">
                    菜单
                </div>
            </div>
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
            <script>
                window.onload = function() {
                    document.oncontextmenu = function(e) {
                        e.preventDefault()
                    }
    
                    var vm = new Vue({
                        el: "#app",
                        data: {
                            showMouseMenu: false
                        },
                        methods: {
                            showMenu(e) {
                                console.log(e.button)
                                if (e.button === 2) {
                                    this.showMouseMenu = true
                                }
                            }
                        }
                    })
                }
            </script>
        </body>
    
    </html>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 修改了问题 4月20日
  • 修改了问题 4月20日
  • 展开全部

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)