Vue2.js:v-click-outside自定义指令和vue-click-outside监听鼠标点击元素外部区域事件

简介: Vue2.js:v-click-outside自定义指令和vue-click-outside监听鼠标点击元素外部区域事件

image.png

自定义指令 v-click-outside

文档


https://v2.cn.vuejs.org/v2/guide/custom-directive.html

v-click-outside 可以实现点击外部区域才触发事件


实现代码


<template>
  <div class="TestClickOutside">
    <div
      class="TestClickOutside__inner"
      v-click-outside="handleClickOutside"
    ></div>
  </div>
</template>
<script>
// created at 2022-08-25
export default {
  name: 'TestClickOutside',
  props: {},
  components: {},
  data() {
    return {}
  },
  directives: {
    'click-outside': {
      bind(el, binding, vnode) {
        console.log('bind')
        function eventHandler(e) {
          if (el.contains(e.target)) {
            return false
          }
          // 如果绑定的参数是函数,正常情况也应该是函数,执行
          if (binding.value && typeof binding.value === 'function') {
            binding.value(e)
          }
        }
        // 用于销毁前注销事件监听
        el.__click_outside__ = eventHandler
        // 添加事件监听
        document.addEventListener('click', eventHandler)
      },
      unbind(el, binding, vnode) {
        console.log('unbind')
        // 移除事件监听
        document.removeEventListener('click', el.__click_outside__)
        // 删除无用属性
        delete el.__click_outside__
      },
    },
  },
  methods: {
    handleClickOutside() {
      console.log('handleClickOutside')
    },
  },
  created() {},
}
</script>
<style lang="less"></style>
<style lang="less" scoped>
.TestClickOutside__inner {
  width: 100px;
  height: 100px;
  background-color: #666666;
}
</style>

vue-click-outside

文档


github https://github.com/vue-bulma/click-outside

安装

$ npm install vue-click-outside
<template>
  <div class="TestClickOutside">
    <div
      class="TestClickOutside__inner"
      v-click-outside="handleClickOutside"
    ></div>
  </div>
</template>
<script>
// created at 2022-08-25
import ClickOutside from 'vue-click-outside'
export default {
  name: 'TestClickOutside',
  props: {},
  components: {},
  data() {
    return {}
  },
  directives: { ClickOutside },
  computed: {},
  methods: {
    handleClickOutside() {
      console.log('handleClickOutside')
    },
  },
  created() {},
}
</script>
<style lang="less"></style>
<style lang="less" scoped>
.TestClickOutside__inner {
  width: 100px;
  height: 100px;
  background-color: #666666;
}
</style>
相关文章
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
270 2
|
JSON JavaScript 前端开发
JavaScript 详解——Vue基础
【8月更文挑战第16天】
193 3
JavaScript 详解——Vue基础
|
10月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
482 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
339 0
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
460 3
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
378 3
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
720 0
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
375 0
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信