Jquery 在vue 2中单击外部后隐藏元素
在使用Vue 2和laravel单击外部后,我试图隐藏一个侧边栏。此侧栏是在导航栏组件内创建的。首先,我添加了一个Jquery 在vue 2中单击外部后隐藏元素,jquery,vue.js,Jquery,Vue.js,在使用Vue 2和laravel单击外部后,我试图隐藏一个侧边栏。此侧栏是在导航栏组件内创建的。首先,我添加了一个@click=“showSidenav=!showSidenav”来打开它并将数据初始化为showSidenav:false。还添加了一个close anchor标记来隐藏侧边栏。工作很好,但当事情在我脑海中出现时,在侧边栏外单击时也隐藏它怎么样?我创建了一个方法showSidenav并执行元素的打开,并尝试使用nextTick,但它的执行时间与调用该方法的时间相同。目前,我在方法中
@click=“showSidenav=!showSidenav”
来打开它并将数据初始化为showSidenav:false
。还添加了一个close anchor标记来隐藏侧边栏。工作很好,但当事情在我脑海中出现时,在侧边栏外单击时也隐藏它怎么样?我创建了一个方法showSidenav
并执行元素的打开,并尝试使用nextTick
,但它的执行时间与调用该方法的时间相同。目前,我在方法中使用jquery再次更改数据,但当我再次单击汉堡包菜单时,它不会更改数据
编辑:根据@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');
},
},
};
从“vue clickaway”导入{mixin as clickaway};
导出默认值{
混合:[单击离开],
模板:“单击away
”,
方法:{
离开:函数(){
log('clicked away');
},
},
};
为什么要混合使用dom操作和vue.js?没有jQuery lol完全可行。@WilomGfx,是的,lol,我讨厌我为什么这样写:DHey!我来试试。试过了,但运气不好。这就是我设置数据的方式:away:function(){This.showSidenav=false},
问题是它在我调用opensidenav的同时启动,你能在你的问题中包含你的模板代码吗?这将帮助我更好地了解你们是如何安排的。已经更新了上面的帖子。顺便说一句,我是用npm安装的。好吧,我真的很好奇,所以我看了看它,基本上问题是,只要你点击将showSidenav
设置为true
的链接,你就会同时触发away()
函数,然后将showSidenav
设置为false
。解决方案是将这两个元素包装在包装器div
中,并将vue置于clickaway
包装元素上。是一个JSFIDLE,它显示了它的工作原理。
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
}
}
}
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');
},
},
};