jquery点击click事件和blur事件冲突如何解决

最近作了一个查询小功能,input输入框输入文字后,自动列出几条查询结果,能够键盘上下键或鼠标进行查询结果选择,而且点击输入框其余地方要隐藏这个列出的结果。css

但比较头疼的是input上添加blur事件和查询提示结果click事件发生冲突,点击查询结果时,会首先触发input的blur事件,致使将查询提示结果隐藏选择不了,chrome

 

解决办法:浏览器

给blur失去焦点事件添加延迟事件,让blur事件在click事件后执行。测试

 

$( ".query_tools" ).blur( function (event){
     setTimeout( function  () {
         $( ".query_list" ).css( "display" "none" );
     }, 300);
});
 
另外一个解决方案有bug,
2.添加mouseover,mouseout 。前者删除blur事件,后者添加回来。鼠标在click执行以前先执行了mouseover事件,删除blur就不会隐藏了,而后点击完成后,mouseout再把blur添加回来,就好了。(mouseover ,mouseout不会转移焦点)。
测试的是chrome浏览器。
相关文章
相关标签/搜索