首页 > 其他分享 >只监听父元素的滚动事件,而不监听子元素的滚动事件

只监听父元素的滚动事件,而不监听子元素的滚动事件

时间:2023-04-26 16:00:09浏览次数:29  
标签:滚动 dom refs 元素 监听 event scrollHeight

第一种,JS

1、判断dom

this.$refs.squareRef.addEventListener('wheel', this.addScrolbarFn, false)

addScrolbarFn(event) {
  event.stopPropagation()
  const dom = this.$refs?.rightResultRef?.$refs?.resultDiv
  if (event.target === this.$refs?.squareRef) {
    const goFlag = dom?.scrollTop + dom.clientHeight === dom.scrollHeight ? true : false
    // 上滚 && 不在顶部
    if (event?.deltaY < 0 && dom.scrollTop !== 0) {
      const scrollHeight = dom.scrollTop - 100
      dom?.scrollTo(0, scrollHeight)
    } else if (event?.deltaY > 0 && !goFlag) {
      const scrollHeight = dom.scrollTop + 100
      dom?.scrollTo(0, scrollHeight)
    }
  }
},

this.$refs.squareRef.removeEventListener('wheel', this.addScrolbarFn)

2、子元素阻止冒泡

<div id="parentEl" @wheel="handleScroll">
  <div id="childEl" @wheel="handleChildScroll"></div>
</div>

<script>
var parentEl = document.querySelector('#parentEl');
var childEl = document.querySelector('#childEl');

function handleScroll(event) {
  console.log('父元素滚动');
}

function handleChildScroll(event) {
  event.stopPropagation();
  console.log('子元素滚动');
}
</script>

第二种,vue 监听器配合修饰符

标签:滚动,dom,refs,元素,监听,event,scrollHeight
From: https://www.cnblogs.com/DL-CODER/p/17356335.html

相关文章

  • Vue监听页面放大缩小事件
    Vue监听页面放大缩小事件 ,使用window.addEventListener,methods中方法ChangeWin(){letratio=this.getRatio();letPwidth=window.screen.width*this.getRatio()/100;letPHeight=window.screen.height*this.getRatio()/100;//1920*1080......
  • [SQL Server 2008R2] 有关于判断表、字段、存过等元素是否存在相关SQL写法
    表相关普通表查询普通表是否存在可以使用object_id函数,下面的例子是查询表“t_test”是否存在之后从而进行其他的DLL操作:ifobject_id('t_test')isnotnullbegin--如果表存在这段里面写相关逻辑select1end 临时表临时表同样可以用object_id但......
  • python+playwright 学习-56 svg 元素定位
    前言SVG英文全称为ScalablevectorGraphics,意思为可缩放的矢量图,这种元素比较特殊,需要通过​name​()函数来进行定位。svg元素定位如下看到的svg标签,就是svg元素用普通的标签定位,是无法定位的,如xpath的//svg只能通过name()函数来定位//*[name()="svg"]页面上用......
  • 【Vue】如何watch v-for中的元素属性值
     如果你想watch一个v-for中的变量,你可以在vue组件的watch对象中创建一个函数,来监听这个变量。假设你有一个数组items,它是一个对象数组,你想要监听每个对象的name属性。那么你可以这样写:<template><divv-for="iteminitems":key="item.id">{{item.name}}</div></tem......
  • uni-app中使用uCharts图表设置横向滚动无法滑动。
    opts:{ color:["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding:[15,10,0,0], enableScroll:true, upd......
  • 鼠标穿透控制下层窗口的滚动条
    /*应:我怕生!:linux下在非激活的窗口上也能用滚轮.并且窗口不会被提升..我觉得这设置好好哦.可惜Windows下不知道怎么弄.*/;例子:鼠标滚轮穿透控制其下窗体垂直滚动条的位置。;因为焦点控件随时更新,所以需要用到v1.0.43.06+本版中的ControlGetHwnd命令。;ControlGetHwnd命......
  • 移除元素
    staticvoidRemoveDataFromList(int[]nums,intval){intj=nums.Length-1;inti=0;while(i<=j)//感觉总卡在边界上{if(nums[i]==val){i......
  • vue3+jointjs 使用模板添加元素
    关于如何在Vue3和JointJS中使用拖拽模板来创建节点元素,可以按照以下步骤进行:1.安装JointJS使用npm进行安装:```npminstalljointjs```2.在Vue3中创建JointJS容器在Vue3中创建一个组件,用于创建JointJS的画布和节点。在组件的生命周期方法`mounted`......
  • ref用法(获取元素节点)
    importReactfrom'react'exportdefaultclassAppextendsReact.Component{myref=React.createRef()render(){return(<div>{/*获取输入框的内容写法一*/}<inputref=......
  • Watch监听-示例
    packagecom.hw.curator;importorg.apache.curator.RetryPolicy;importorg.apache.curator.framework.CuratorFramework;importorg.apache.curator.framework.CuratorFrameworkFactory;importorg.apache.curator.framework.api.BackgroundCallback;importorg.apach......