为了账号安全,请及时绑定邮箱和手机立即绑定

事件侦听器滚动或单击

事件侦听器滚动或单击

一只斗牛犬 2021-12-23 14:27:01
我有一个包含多个部分的网页。要从一个部分切换到另一个部分,我不使用滚动,但一切都是通过单击来完成的(菜单、分页、箭头等...)一旦用户进入一个部分,背景就会改变颜色,每个部分都变成它的颜色。我创建这种函数没有问题,但我有一个性能问题。或者也许这是我不知道的逻辑问题如果我将我的事件绑定在滚动条上并在该部分处于正确位置后立即要求更改颜色会更好window.addEventListener('scroll', requestAnimationFrame(function(){    if ( sectionPosition === 0 ){        // Do something...    }}))或者如果我使用事件委托将我的事件绑定在不同的可点击元素上会更好     window.addEventListener('click', function(event){    let selector = event.target.getAttribute("href");    if( selector === "#section-one"){        //....    }    if(selector === "#section-two"){        //....    }})
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我认为第二个选项很好,在滚动时添加侦听器会导致在滚动的每个像素时调用回调,因此在许多不需要的调用中,使动作显式优于隐式


最好的情况是,您需要在每个元素上而不是在整个窗口上添加单击事件侦听器,以避免通过任何单击触发单击回调。


在目标项目上添加点击事件


const sectionOneEl = document.querySelector('#section-one');


sectionOneEl.addEventListener('click', ev => {

  // section one click handler

});


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号