jquery點擊click事件和blur事件沖突如何解決


最近做了一個查詢小功能,input輸入框輸入文字后,自動列出幾條查詢結果,可以鍵盤上下鍵或鼠標進行查詢結果選擇,並且點擊輸入框其他地方要隱藏這個列出的結果。

但比較頭疼的是input上添加blur事件和查詢提示結果click事件發生沖突,點擊查詢結果時,會首先觸發input的blur事件,導致將查詢提示結果隱藏選擇不了,

 

解決辦法:

給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瀏覽器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM