美文网首页
Vue中判断点击是否在组件外

Vue中判断点击是否在组件外

作者: kuzu | 来源:发表于2019-08-04 21:24 被阅读0次

    自己使用div模拟select,有如下需求:

    • 组件获得焦点时,自动弹出下拉菜单
    • 鼠标点击下拉菜单时,下拉菜单不能收回
    • 鼠标点击输入框时,下拉菜单不能收回
    • 鼠标点击其他任何地方或者组件失去焦点时,下拉菜单自动收回

    核心问题就是判断鼠标点击事件是否在组件的dom树中发出,主要代码如下:

    const app = document.body
    let flag = false
    \\创建回调逻辑
    onClick = function(e) {
      return flag = document.getElementById("id").conatins(e.target)
    }
    \\添加事件监听器
    app.addEventListener('click', onClick, true)
    \\删除监听器
    app.removeEventListener('click', onClick, true)
    

    整个过程很简单,就是给根元素增加一个点击事件监听器,绑定一个处理函数,每当触发点击事件之后就检查点击的元素在不在组件的dom元素树种,如果不在就将标记改为否,反之就改为真。

    相关文章

      网友评论

          本文标题:Vue中判断点击是否在组件外

          本文链接:https://www.haomeiwen.com/subject/idimdqtx.html