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瀏覽器。
相關文章
相關標籤/搜索