jquery - 在 vue 2 中单击外部后隐藏元素

标签 jquery vue.js

我试图在使用 Vue 2 和 laravel 单击外部后隐藏侧边栏。这个侧边栏是在导航栏组件中创建的。起初,我添加了一个 @click="showSidenav = !showSidenav" 只是为了打开它并将数据初始化为 showSidenav: false。并且还添加了一个关闭 anchor 标记来隐藏侧边栏。实际上工作正常,但是当我想到在侧边栏外单击时也隐藏它怎么样?我创建了一个方法 showSidenav 并执行元素的打开并尝试使用 nextTick 但它在我调用该方法时同时执行。现在,我在方法中使用 jquery 再次更改数据,但是当我再次单击汉堡菜单时,它不会更改数据。

template structure

<a href="#" v-on-clickaway="away" @click="openSidenav">Hamburger menu</a>

脚本

 import { mixin as clickaway } from 'vue-clickaway';
    export default {
         mixins: [ clickaway ],
         data() {
             return {
                 showSidenav: false,
             }
         },
         methods: {
             openSidenav: function () {
                 this.showSidenav = true
             },
             away: function () {
                this.showSidenav = false
             }
         }
    }

EDIT: Added vue-clickaway as suggested by @Nathan.

最佳答案

我刚遇到这个问题。使用 vue-clickaway .

他们的“ Hello World ”示例:

import { mixin as clickaway } from 'vue-clickaway';

export default {
  mixins: [ clickaway ],
  template: '<p v-on-clickaway="away">Click away</p>',
  methods: {
    away: function() {
      console.log('clicked away');
    },
  },
};

关于jquery - 在 vue 2 中单击外部后隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953567/

相关文章:

google-maps - 如何使用 VueJs 在 Google map 中添加我的位置按钮?

vue.js - 从另一个模块访问 vuex 模块状态

javascript - 如何在选中 vuetify 中的一个复选框时选中所有复选框?

javascript - 如何完成JavaScript验证

javascript - 尝试从没有正确 'allow' 属性的框架调用 enumerateDevices

jquery - 为什么我的jquery延迟处理错误和jsonp数据不起作用?

javascript - 在计算属性中使用 Vuex 状态打开模态,更改被忽略,模态保持关闭

javascript - 在 Jquery 对话框弹出窗口中填充表单元素

javascript - Firefox 中的 body 最大高度

javascript - 如何在一台服务器上部署nodejs api和vuejs app