日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搜索提示时jquery的focusout和click事件冲突问题完美解决

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搜索提示时jquery的focusout和click事件冲突问题完美解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在主流的搜索引擎上搜索時,輸入內容,往往會彈出智能提示。輸入框為input,智能提示區域為suggest。接下來一般有兩種操作:

  1.選擇某一提示,則把內容復制到input中,自動關閉suggest;

  2.點擊網頁其他地方,自動關閉suggest。

  實現第一個可以用click事件,在suggest中增加鼠標click事件,在處理中將點擊的內容寫到input中,然后關閉suggest。單獨測試無問題;實現第二個可以在input元素上增加focusout事件或者blur事件,在input中丟失焦點的時候,關閉suggest。單獨測試無問題。但是放在一起的時候,就會出現問題,只響應了丟失焦點事件(關閉了suggest),卻沒有響應內容點擊事件(沒有獲取點擊的suggest內容)。不明白為什么會沖突,在網上搜,也搜到了一些同樣的問題,有人建議使用blur,但是blur跟focusout是一樣的道理,都不行。

? ? ? ?思前想后,忽然想到click事件的觸發條件,你點擊一個按鍵,觸發一次點擊事件,而一次點擊包括:鼠標點下去,鼠標松開。而jquery的click事件是鼠標松開后才觸發的(事實上button元素和href元素的點擊事件都是這樣),這樣一想就明白剛剛出現的沖突問題了,你點中suggest中的某一提示,這時候input丟失焦點事件觸發,關閉了suggest區域,而這個時候你的鼠標才松開(電腦反應速度要快于鼠標點擊松開速度),完成點擊,但此時鼠標已經不在suggest要選擇的提示上面了,所以也就無法觸發suggest里的點擊事件。

? ? ? ? 想明白了這點,問題就好解決了,把suggest中的響應事假改成mousedown,這樣在鼠標點的時候就會觸發,測試了一下,果然成功了,mousedown事件和focusout事件都得到了正確處理。

//input的丟失焦點事件 $("#input_area").focusout(function(){$("#suggest_div").hide(); });//suggest區域的點擊事件 $("#suggest_div li").mousedown(function(){$("#input_area").val($(this).text());$("#suggest_div").hide(); });

? ? ? ?將click換成mousedown就完全ok了,簡單到我都不好意思說,但是有的時候,也不容易想到哇!

?

? ? ? ?另外,在網上還找到了別的方法,一個是

$("#input_area").keypress(function() {$("#suggest_div").slideDown();}).blur(function() {$("#suggest_div").slideUp();});

? ? ? ?這種方法用隱藏動畫造成了延遲,使得suggest區域的click事件可以觸發。但是slide可不適應所有情況,而且把功能成功與否建立在動畫隱藏的速度快慢上,個人覺得也不太合適。

? ? ? ?另一種方法是將input和suggest用一個div包起來,事件直接加在div上面。這個未測試過,不過理論上應該也是可行的。

?

轉載于:https://www.cnblogs.com/zhaock/archive/2013/04/25/8353236.html

總結

以上是生活随笔為你收集整理的搜索提示时jquery的focusout和click事件冲突问题完美解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。