Ajax 板


LINE

※ [本文轉錄自 Web_Design 看板] 作者: TonyQ (沉默是金) 看板: Web_Design 標題: [心得]從 js 到 jQuery 之三 補充資料 時間: Sat Aug 9 23:10:52 2008 由於本系列文章主題是「從js到jquery」 , 所以主要內容在於對比 js 到 jquery之間 , 究竟改善了什麼 , jQuery究竟可以對我們有什麼助益 , 順便介紹jQuery的一些常用的plug-in. 目前是預定一天一篇主題 , 主題目前規劃約十篇左右 , 主題從簡介js , 基本dom操作 , 到進階的元素瀏覽(Traversing) , 再到 effects 跟一些頁面操作 (manipulation), 我想 , 我的目標是希望讓它變得很有趣 . :) ──────────────────────────────── 礙於篇幅 , 個人經驗是bbs 適合閱讀的字數約800~1000字 , 約4-5頁 , 內容沒有辦法專注於 jQuery的介紹 , 而僅摘出筆者認為適合的內容, 於是在有必要與討論互動的狀況下 , 另開補充資料來彌補介紹文章不足. 本文開始. ──────────────────────────────── 本篇為列出jQuery各項常用事件的寫法 , 所作的簡單 jQuery Event 操作說明(usage) . 文件參考 http://docs.jquery.com/Events 文件中提到共39個function , 其中約有一半是trigger , 另一半則是 binder , 其中我僅列出一些基本的binder 跟 trigger 的用法 , 因為大部分的用法都大同小異 , 有需要時再依照本篇所介紹的規則去查詢吧! ──────────────────────────────── click應該看膩了 , 我們用change來當例子 change( ) Returns: jQuery Triggers the change event of each matched element. change( fn ) Returns: jQuery Binds a function to the change event of each matched element. jQuery事件裡面通常 , 有給他fn的就是 binder , 把事件綁定上去的, 而通常沒有事件的就是trigger , 只呼叫某個元件的某個事件. 比方說以下的範例 ------------------------------------------------- $("input[type=text]").change( function(e){ alert(" you modify the text"); } ); ------------------------------------------------- 來分析一下 $("input[type=text]") 是要被綁定的jQuery對象 , 指網頁上的所有文字輸入框. function(e){ alert("..."); } 要綁定給 jQuery對像的事件 , 且綁定在 click事件上. ------------------------------------------------- @關於事件... 從這裡我們就可以有個基本問題 , 一定要這樣宣告事件不可嗎? 不能重複利用事件嗎? 我們其實也可以這樣做 ------------------------------------------------- /*注意,這是個global function.*/ function doSomething(e){ alert(" you modify the text"); } ------------------------------------------------- $("input[type=text]").change(doSomethining); ------------------------------------------------- @還有別的寫法嗎? 聽說javascript宣告方式很多元? 沒錯 , 所以當然這樣做也是沒問題的. ------------------------------------------------- var doSomething=function(){alert(" you modify the text");}; $("input[type=text]").change(doSomethining); ──────────────────────────────── @用這些方法有什麼差異嗎? 上面這些寫法是各種function的寫法 , 原則上沒什麼差異 , 除了最一開始的那種是沒有名字的函數物件以外 . 另外就是要考慮到如果是全域function , 要注意到取名時別和別的事件同名. 而想觸發元件的change 事件的方法就是 , $("input[type=text]").change(); 給他空的參數內容就會自動看成trigger ,去觸發事件了, 通常trigger會比較常用在submit跟focus , 當然也有其他的需要 , 比方說我們想模擬按鈕被按下的行為時. @還有什麼要注意的嗎? 當然有一個特殊的事件不適用這個模式 , hover( over, out ) 這個事件可以說是由 mouseover 跟 mouseout組合而成 , 他接收兩個事件變數 , over時執行第一個 , out時執行第二個 . 另外就是 resize( fn ) 跟 scroll( fn ) 他不支援你直接去觸發這個事件 , 因為這是一種特別的行為 , 當然你還是可以用別的方式來triger他. 比方說對它設定 css 寬高可以觸發resize之類的. @如果我想創造自己的事件...? 其實 jQuery 支援自訂event , 所以有時我們也會用到底下這四個方法 . bind( type, data(可省略), fn ) one( type, data(可省略), fn ) trigger( type, data ) unbind( type, data ) 以前面的例子來說 , 也可以寫成以下的形式. $("input[type=text]").bind("change",function(e){alert("modified");}); 至於data , 如果你給bind三個參數 (註1), 他會被當成參數傳遞 , 可以在 e.data 取得這個資料. @one看起來跟 bind好像? 他們一樣嗎? 沒錯 , 很好的觀察力 , one 幾乎跟 bind 一模一樣 , 只是他只會被執行一次就會自動unbind . 而trigger則是對應的觸發者 , 所以你也可以binding一個非預設的event type, 然後透過trigger去觸發該event , 雖然說實務設計上我自己很少運用這點. 大概只會拿來對table做 "addRow" , "deleteRow" 之類的自訂事件吧 unbind則是移除所有該類型的事件 @我binding了三次 , 但我只想移除其中一個 , 可以嗎? 答案是可以 , 但是你必需要採用 bind 方法綁定這個 function , 並且給他一個我們稱之為namespace的東西 , 再透過namespace unbind. 這個困擾其實比較常發生在 plug-in的撰寫上 , 當你同時使用多個plug-in時 , 搞不好大家都要unbind某個元素的事件 為了不互相影響 , 就得透過這樣的機制 . for example $("input[type=text]") .bind("change.first",function(e){alert("alert first");}) .bind("change.second",function(e){alert("alert second");}) .bind("change.three",function(e){alert("alert three");}); $("input[type=text]").unbind("change.second"); 這樣就會只消掉 second , 而first跟three都留著了. 這部份主要是參考 http://blog.ericsk.org/archives/836 ericsk前輩 的介紹 , 有興趣的讀者可以前往閱讀. ──────────────────────────────── 註1. 在這裡我們可以理解到 雖然javascript不支援多型(overloading) , 但是jQuery在設計上其實運用了不少多型技巧, 他靠得是內容,型別跟參數 數量判定他屬於哪一種對象 , $ 這個init function更是運用的鬼斧神工. --- 這篇是補充資料 , 就不放體驗時間了. XD 沒想到又寫到一半睡著 , 放假果然是睡覺的好日子 , 來接著寫今天的主題好了. -- What do you want to have ? / What do you have? 從書本中,你可以發現我的各種興趣。 從CD中,你可以瞭解我所喜歡的偶像明星。 或許從文字你很難以瞭解一個人,但從物品可以。 My PPolis , My past. http://ppolis.tw/user/Tony --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.59.247
1F:→ TonyQ:有需要滑鼠滾輪事件的 , 可參考 #18dIzABS (AJAX版). 08/09 23:11
--



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.59.247
2F:→ kosgroup:推 05/04 02:43
3F:推 etman395:推 08/16 02:38







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP