js创建事件监听,点击事件监听中对dom操作,滚动事件监听的坑,自定创建类似element-UI的组件

53 篇文章 0 订阅
13 篇文章 0 订阅

js创建事件监听,点击事件监听中对dom操作,滚动事件监听的坑,自定创建类似element-UI的组件

一、事件监听是什么?

同一个 EventTarget 注册了多个相同的 EventListener,那么重复的实例会被抛弃。不需要用 removeEventListener 手动清除多余的EventListener,因为重复的都被自动抛弃了。

W3C规范中定义了3个事件阶段,依次是捕获阶段、目标阶段、冒泡阶段。

语法:

element.addEventListener(event, function, useCapture)
event : (必需)事件名,支持所有 DOM事件 。

function:(必需)指定要事件触发时执行的函数。

useCapture:(可选)指定事件是否在捕获或冒泡阶段执行。true,捕获。false,冒泡。默认false。

二、使用步骤

1.click点击事件监听

代码如下(示例):

创建

mounted(){
window.addEventListener('click',(e)=>{
debugger
},false)

删除

destroyed(){
window.removeEventListener('click',(e)=>{
debugger
},false)

2.根据事件监听去创建类似element-UI的组件

代码如下(示例):
html

<div v-for="(item, index) in selectData" :key="index" class="selectItem">
{{item.name}}--{{item.age}}
</div>

js

data(){
return{
selectData : [
{name:'a',age:12},
{name:'ab',age:1112},
]
mounted(){
window.addEventListener('click',(e)=>{
if(!this.$refs.select.contains(e.target)){
this.selectShow = false
}
},false)

css

.selectItem{
color: black;
font-size: 15px;
text-align: center;
line-height: 25px;
height:25px;
width: 50px;
}
.selectItem:hove{
color: 1890ff;
background: #e6f7ff;
}

3.监听滚动事件的坑

根据我的经验,在overflow:auto和overflow:scroll的div上监听不成功

使用@scroll更方便,对于@scroll的冒泡阶段和捕获阶段用了data中的一个状态改变来区分
html

<div
      id="tree"
      class="current-tree-wrap"
      @scroll="scrollEvent"
      style="height: calc(100vh - 200px); overflow: auto"
    >
</div>

js

if (e.currentTarget.scrollTop + e.currentTarget.clientHeight == e.currentTarget.scrollHeight) {
debugger
}

总结

good morning
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值