解决blur与click冲突
展开全部
在开发下拉选择(picker)组件中遇到,点击输入框出现下拉列表,再点击下拉列表选项后下拉列表自动收缩,然而选项值并没有选到
demo演示:
实际开发中,我们会经常遇到某一下拉列表框,点击其他元素消失列表框;点击下拉框子元素使其生效的需求。这就会面临冲突问题。
demo演示:
执行demo,你会发现,并不能正确获取下拉框中某值。
这是为什么呢? :前文已知,blur优先于click执行,而JavaScript为单线程,同一时间只能执行处理一个事件,这就导致blur事件优先触发,隐藏了下拉框展示区,所以导致其后续click事件并不会执行。
方法1:
用setTimeout对blur事件进行延迟,让click先执行
方法2:
使用mousedown代替click让其优先执行
mousedown事件 :当鼠标指针移动到元素上方,并按下鼠标按键时,会发生mousedown事件。
mousedown事件优先于click事件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询