简介:最近做一个电视机顶盒项目,要用到遥控器去实现页面上焦点的移动,来选择产品以及后续操作,遇到的问题是键盘keydown事件在绑定一个div元素后,没有在离开div解除绑定的话,当再次移动到此div上,会出现重复操作的Bug。
问题描述-bug复现
-
初始化页面,焦点在一个产品上,键盘向下移动,到第一个支付方式上
-
焦点在支付方式模块上,键盘向上移动,到之前选中的产品上
-
键盘再次向下移动,这时候会触发多次支付方式div上的keydown事件
Bug原因以及解决方法
- 问题所在:是因为在给定的div元素上添加了keydown事件后,没有解除绑定,导致js在加载时会有事件缓存,不知道理解的对不对
- 解决方法:在添加keydown事件之前在解除绑定即可
$("#pay_methods_left").unbind("keydown").keydown(function(e){})