1. 程式人生 > >jQuery中的事件處理

jQuery中的事件處理

1.頁面載入完畢響應事件
所謂頁面載入完畢是指DOM元素載入就緒了,能夠被讀取和操作了。
①jQuery中的$(doucument).ready()事件
ready(fn)是jQuery事件模組中最重要的一個函式。這個方法可以看作是對window.onload註冊事件的替代方法。通過使用這個方法,可以在DOM載入就緒時立刻呼叫所繫結的函式,而幾乎所有的javaScript函式都是需要在那一刻執行。

ready(fn) 返回值:Object 引數-fn:要在DOM載入就緒時執行的引數Function 當DOM載入就緒時繫結一個要執行的函式
而它有一種很簡單的縮寫形式$(document).ready(function(){}) => $(function(){})



②window.onload()事件和$(document).ready()事件的比較
window.onload()=function(){}
如果使用多個window.onload(),則只有最後一個繫結的函式能被執行,它將覆蓋前面所有window.onload()繫結的函式。
如果使用多個$(),則它們都能被執行。
需要注意的是如果<body onload> body標籤的onload事件已經註冊了某個函式 則$()事件註冊的函式將不會被執行

2.繫結與反繫結事件監聽器
①繫結事件
⑴bind(type,[data],fn)函式
就是將某函式與某元素的某事件繫結在一起 $("#id").click(function(){})就是將一個匿名函式與id元素的click事件綁在一起

但上面的例子其實只是縮寫形式,因為其是簡單常用的事件繫結,正規寫法應如下:
$("#id").bind("click",[data],function(){})
bind(type,[data],fn) 返回值:Object 引數-type:事件型別String data:可選,作為event.data屬性值傳遞給後面fn的實參Object fn:繫結到事件上的函式Function
⑵為處理函式傳遞引數
這裡用到bind()函式的第二個引數及event.data屬性為fn函式傳遞引數
<input id="Text2" type="text" />
$("#Text2").bind("click",{first:"1",second:"2"},function(event){

if(event.data.first=="1"){$(this).val("歡迎光臨")}
if(event.data.second=="1"){$(this).val("")}
});
})
第二個引數為一個json物件,在fn函式中通過event.data通過鍵名獲得引數值
⑶阻止瀏覽器預設的行為
有時bind繫結的函式會與瀏覽器預設的操作衝突,這時如果想阻止瀏覽器預設的操作,只需在fn後面加一句return false;
$("form").bind("submit",function(){return false;})

②反繫結事件
就是解除與某元素的某事件繫結在一起的某函式
unbind([type],[fn名]) 返回值:Object 引數-type:事件型別String fn名:要被解除繫結的函式名Function
以上倆引數都是可選引數 如果引數為空,就是解除所有匹配元素的所有事件所繫結的函式
$(function(){$("#btn1").click(function(){
$("input[type=text]").unbind()})
})
單擊btn1後,解除所有為type=text文字框的事件繫結的所有函式
③一次性的事件繫結
就是為某元素的某事件所繫結的某函式只能被執行一次
one(type,[data],fn) 返回值:Object 引數-type:事件型別String data:可選,作為event.data屬性值傳遞給後面fn的實參Object fn:繫結到事件上的函式Function
使用與bind()函式一致,不同之處就是one裡的fn只能被執行一次。


3.事件觸發器
上述繫結的一些函式,需要使用者執行一定的操作才會被執行,如click事件繫結的函式需要使用者單擊相應的元素才會被執行。但事件觸發器可以用程式碼模擬使用者的操作動作進而執行事件所繫結的函式,而不需要使用者進行某些操作。
trigger(type,[data]) 返回值:Object 引數-type:事件型別String data:可選,傳遞給所觸發的事件所繫結的函式的實參Array(是一個javascript陣列) 觸發所匹配的元素的某類事件所繫結的所有函式,當這類事件與瀏覽器的預設操作衝突時該事件觸發器會執行瀏覽器預設的操作
<input id="Text1" type="text" value="輸入使用者名稱" />
<input id="Text2" type="text" />
$(function(){$("#Text1").bind("click",function(){$(this).val("")})})
$(function(){$("#Text2").click(function(event,pamas1,pamas2)
{$(this).val("trigger事件觸發器"+pamas1+pamas2)})
})
$(function(){$("input[type=text]").trigger("click",["1","2"])})
如上程式碼,雖然為倆文字框的單擊事件綁定了函式,可最後一句程式碼也為這倆文字框的單擊事件設定了觸發器,所以不需要使用者單擊相應的文字框就能執行它們的單擊事件所繫結的函式。另外該觸發器還為它所觸發的函式傳遞了引數,是一個javascript陣列,可以在Text2的單擊函式裡看到引數的獲得。
trigger函式所觸發的事件與瀏覽器的預設操作衝突時該事件觸發器會執行瀏覽器預設的操作,而triggerHandler函式則不會執行瀏覽器預設的操作。
triggerHandler(type,[data]) 與trigger的使用一致


4.事件的互動處理
①hover:模仿滑鼠懸停
hover(over,out) 返回值:Object 引數-over:滑鼠移到元素上觸發的函式Function out:滑鼠移出元素觸發的函式Function
<input type="text" id="hover1-keleyi-com" /><span id="hoverpd-keleyi-com" style="display:none;">判斷使用者輸入</span>
$(function(){$("#hover1-keleyi-com").hover(function(){
$("#hoverpd-kel"+"eyi-com").show();},function(){
$("#hoverpd-keleyi-com").hide();})
})

②toggle:多次單擊的迴圈響應
為匹配的元素的單擊事件新增許多繫結函式,這些函式隨著不停的單擊該元素而迴圈執行
toggle(fn1,fn2,fn3...) 返回值:Object 引數-fn1,fn2,fn3...要迴圈的函式Function
<input type="button" id="toggle1" value="toggle"/>
var i=0;
$(function(){$("#toggle1").toggle(function(){i++;$("#hover1").val(i)},
function(){i=i+2;$("#hover1").val(i)})
})

5.jQuery的內建事件型別
①jQuery內建事件函式的兩種宣告方式
不帶引數的事件函式-事件型別名() 模擬了使用者的操作
帶引數的事件函式-事件型別名(事件函式)
$($("#id").click(function(){})) 帶引數的事件函式
$($("#id").click(function(){}); $("#id").click();) 不帶引數的事件函式-不單擊#id也會執行相應函式 即模擬了使用者操作

②jQuery內建事件型別分類

⑴瀏覽器相關事件
error(fn) 匹配元素髮生錯誤時觸發某函式,error事件沒有標準,如當影象src無效時會觸發影象的error事件
load(fn) 匹配元素載入完後觸發某函式,如window是在所有DOM物件載入完才觸發,其他單個元素是在單個元素載入完後觸發
unload(fn)
resize(fn) 匹配元素改變大小時觸發某函式
scroll(fn) 滾動條發生變化時觸發

⑵表單相關事件
change(fn) 在匹配元素失去焦點時觸發,也會在元素獲得焦點後觸發
select(fn) 當用戶在文字框中選中某段文字時觸發
submit(fn) 提交表單時觸發

⑶鍵盤操作相關事件
keydown(fn) 鍵盤按下時觸發
keypress(fn) 鍵盤按下又彈起時觸發 順序是keydown->keyup->keypress
keyup(fn) 鍵盤彈起時觸發

⑷滑鼠操作相關事件
click(fn) 順序是mousedown->mouseup->click
mousedown(fn)
mouseup(fn)
dblclick(fn)
mouseover(fn)
mouseout(fn)
mousemove(fn) 在匹配元素上移動時觸發,事件處理函式會被傳遞一個變數--事件物件(其clientX,clientY屬性代表滑鼠座標)

⑸介面顯示相關事件
blur(fn) 匹配元素失去焦點時觸發 即可是滑鼠 也可使Tab鍵
focus(fn)

相關推薦

jqueryajax處理跨域的三大方式

代碼 new .ajax abs port ole ren make and 一、處理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已經實現了跨域訪問。但ie10以下不支持 只需要在服務端填上響應頭:

描述wxWidgets事件處理的類型轉化

format type() The invalid connect tracker efi AC RM wxWidgets是一個比較常用的UI界面庫,我曾經試著使用wxWidgets寫一個UI編輯工具,在此期間,學習了一些wxWidgets的知識。我對wxWidgets的綁

原生JS及jQuery事件委託的寫法

在繫結節點事件處理程式時遇到的問題: 每個 函式都是物件,都會佔用記憶體;記憶體中的物件越多,效能就越差。 其次,必須事先指定所有事件處理程 序而導致的 DOM訪問次數,會延遲整個頁面的互動就緒時間。 採用事件委託的優點: document 物件很

XAML: 自定義控件事件處理的最佳實踐

prot rgs 最終 一個 處理器 聲明 div 名稱 con 原文:XAML: 自定義控件中事件處理的最佳實踐在開發 XAML(WPF/UWP) 應用程序中,有時候,我們需要創建自定義控件 (Custom Control) 來滿足實際需求。而在自定義控件中,我們一般會用

JQuery事件繫結的四種方法及其優缺點

JQuery中事件繫結的方法有bind、live、delegate、on 1、bind:bind(type [,data], fn) .bind,監聽器繫結到目標元素上,會將所有匹配的元素都繫結一次事件。因此,當元素很多時,後來動態新增的元素不會被繫結。

JqueryAjax處理跨域的方式

一、處理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已經實現了跨域訪問。但ie10以下不支援 只需要在服務端填上響應頭: header("Access-Control-Allow-

惡補jquery(四)jquery事件--冒泡

事件        當我們在開啟一個頁面的時候,瀏覽器會對頁面進行解釋執行,這實際上是通過執行事件來驅動的,在頁面載入事件時,執行Load()事件,是這個事件實現瀏覽器解釋執行程式碼的過程。 事件機制

jQuery事件觸發的三種方式及區別

第一種事件觸發的方式: 呼叫文字框的獲取焦點的事件---------物件.事件名字(); eg: $("#txt").focus(); 第二種事件觸發的方式: 運用trigger方法 eg: $("#txt").trigger("focus"); 第三種事件觸

利用jQuery選擇器快速匹配文檔的按鈕,並為該按鈕綁定事件處理函數

body var jquery pla .org title color button ansi <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org

jquery的bind()、live()的區別與使用(事件處理

綁定 HA 我們 doc dso 目標 code span ive 原文:jquery中的bind()、live()的區別與使用(事件處理)使用jquery有一段時間了,剛開始看別人的源代碼的時候對事件的綁定方法有疑惑。比如: var btn=$("#button")

jQuery事件處理

1.頁面載入完畢響應事件所謂頁面載入完畢是指DOM元素載入就緒了,能夠被讀取和操作了。①jQuery中的$(doucument).ready()事件ready(fn)是jQuery事件模組中最重要的一個函式。這個方法可以看作是對window.onload註冊事件的替代方法。通過使用這個方法,可以在DOM載入就

jQuery的屬性操作,jQuery事件處理jQuery 的動畫簡單介紹

jQuery中的屬性操作,jQuery中的事件處理、jQuery 中的動畫簡單介紹 getAttribute(‘name’) setAttribute(‘name’, ‘Tom’) attr(): 獲取屬性和設定屬性 當為該方法傳遞一個引數時, 即為某元素的獲取指定屬性 當為該方法傳遞兩個引數時, 即為

JQuery阻止事件冒泡方式及其區別

use urn query class span 事件冒泡 事件 clas nbsp 方式一:event.stopPropagation(); 1 $("#div1").mousedown(function(event){ 2 event.stopPropa

Nginx事件處理的connection和read、write事件的關聯

ase handle inux cycle ngx auth eof conn ont /********************************************************************* * Author : Samson

Jquery的bind(),live(),delegate(),on()綁定事件方式 前言

文章 let com 多說 空格 code html event 進行 前言   因為項目中經常會有利用jquery操作dom元素的增刪操作,所以會涉及到dom元素的綁定事件方式,簡單的歸納一下bind,live,delegate,on的區別,以便以後查閱,也希望該文章日後

JQuery的Dom操作和事件

表單 lba app 選擇 ava return server pen log (一)JQuery中的事件 1.常規事件,把js事件中的on去掉   復合事件:hover(function(){},function(){}) ---- 相當於把鼠標移入移出事件和在一起執行

關於表單form元素onsubmit事件處理機制的認識

讓我 clas 教程 是否 它的 默認方法 對象實例 action 事件處理機制   博主目前處於Js學習的初期,遇到了很多問題,比如今天的關於表單form元素中onsubmit事件問題,根據教程所述,onsubmit事件是在表單提交的時候觸發的,但是我看到教程上的onsu

jQuery事件

方法 ever () 圖片 關聯 ready click type see 1.加載DOM 在頁面加載完畢後,JS用window.onload為DOM元素添加事件,jQuery中,用$(document).ready()為DOM元素添加事件,使用該方法可以在DOM載入就緒時

jqueryajax的相關事件匯總

see asc html tty 分類 spl function global 文檔 Jquery ajax事件分類 (一) 局部事件 local events 局部事件:在單個Ajax請求對象中綁定的事件,每個 Ajax 請求對象能夠依據須要綁

Jqueryclick事件重復執行的問題

銷毀 事件 事件綁定 方案 cti highlight logs () clas $(‘#xxx‘).unbind(‘click‘).click(function () { ... });   每次綁定前先取消上次的綁定。 1.一種方法是彈窗隱藏的時候把彈窗銷