[心得]jQuery blur事件擴充
blur基本上是失焦
也就是 原本a物品是focus的狀態 , 接著任意b物品變成focus()
a被移除focus狀態時 , 就會呼叫blur.
但是這個event我反覆測來測去 ,
只有input跟select還有textarea是會有blur行為.
理由是只有這些元素 , 是點擊時會觸發 focus().
舉例 ,像 div 就沒有 focus的狀態.
但這樣就會造成我們實做一些自訂元件的困擾 ,
比方說想拿 div 模擬 select 項目 .
(理由可能是外框跟選項內容可以有更大的彈性.)
──────────────────────────────────
我簡單寫了一個 eBlur() (e只是為了跟原本的blur作區隔)
以 click / focus 兩個事件偽裝成focus 的狀態 ,
而以body被click跟使用者按下tab鍵當作是 blur() 的進入點.
節錄code如後, 當然 , 這東西是不能透過bind綁定的 . :p
──────────────────────────────────
function _blur(e){
jq("[eBlur=1]").blur();
}
$(document).click(_blur).keyup(
function(e){
if(e.keyCode==9){
_blur();
}
}
);
$.pBlur=function(elem,fn){
if($.isFunction(fn)){
var jqThis=$(elem);
jqThis.bind("blur.pb",fn);
/*原本就支援fn的不作*/
if(!jqThis.is(":input,select,textarea")){
var cb=function(){
jqThis.attr("eBlur","1");
};
$(elem).bind("focus.pb",cb).bind("click.pb",cb);
}
}else{
$(elem).blur();
}
}
$.fn.pBlur=function(fn){
$(this).each(function(){$.pBlur(this,fn);});
return $(this);
};
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.219.202
※ 編輯: TonyQ 來自: 220.128.219.202 (09/18 15:08)
※ 編輯: TonyQ 來自: 220.128.219.202 (09/18 15:09)
→
09/18 15:16, , 1F
09/18 15:16, 1F
※ 編輯: TonyQ 來自: 220.128.219.202 (09/18 15:24)
※ 編輯: TonyQ 來自: 220.128.219.202 (09/18 15:50)
→
09/18 17:56, , 2F
09/18 17:56, 2F
→
09/19 02:59, , 3F
09/19 02:59, 3F
→
09/19 03:23, , 4F
09/19 03:23, 4F
→
09/19 03:23, , 5F
09/19 03:23, 5F
→
09/19 03:24, , 6F
09/19 03:24, 6F
→
09/19 03:25, , 7F
09/19 03:25, 7F
→
09/19 03:26, , 8F
09/19 03:26, 8F
→
09/19 03:29, , 9F
09/19 03:29, 9F
→
09/19 03:29, , 10F
09/19 03:29, 10F
→
09/19 03:30, , 11F
09/19 03:30, 11F
→
09/19 03:30, , 12F
09/19 03:30, 12F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
0
12
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章