events:一個(gè)或多個(gè)用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 。

創(chuàng)新互聯(lián)是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷人員及形象策劃。承接:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站改版、網(wǎng)頁設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺(tái)等全方位的服務(wù)。
selector:一個(gè)選擇器字符串用于過濾器的觸發(fā)事件的選擇器元素的后代。如果選擇器為null或省略,當(dāng)它到達(dá)選定的元素,事件總是觸發(fā)。
data:當(dāng)一個(gè)事件被觸發(fā)時(shí)要傳遞event.data給事件處理函數(shù)。
fn:該事件被觸發(fā)時(shí)執(zhí)行的函數(shù)。 false 值也可以做一個(gè)函數(shù)的簡(jiǎn)寫,返回false。
當(dāng)?shù)诙€(gè)參數(shù)'selector'為null時(shí),on()和bind()其實(shí)在用法上基本上沒有任何區(qū)別了,所以我們可以認(rèn)為on()只是比bind()多了一個(gè)可選的'selector'參數(shù),所以on()可以非常方便的替換掉bind()
在 1.4之前相信大家非常喜歡使用live(),因?yàn)樗梢园咽录壎ǖ疆?dāng)前以及以后添加的元素上面,當(dāng)然在1.4之后delegate()也可以做類似的事情了。live()的原理很簡(jiǎn)單,它是通過document進(jìn)行事件委派的,因此我們也可以使用on()通過將事件綁定到document來達(dá)到 live()一樣的效果。
1、live()寫法
2、on()寫法
這里的關(guān)鍵就是第二個(gè)參數(shù)'selector'在起作用了。它是一個(gè)過濾器的作用,只有被選中元素的后代元素才會(huì)觸發(fā)事件。
delegate() 是1.4引入的,目的是通過祖先元素來代理委派后代元素的事件綁定問題,某種程度上和live()優(yōu)點(diǎn)相似。只不過live()是通過document元素委派,而delegate則可以是任意的祖先節(jié)點(diǎn)。使用on()實(shí)現(xiàn)代理的寫法和delegate()基本一致。
1、delegate()的寫法
2、on()寫法
貌似第一個(gè)和第二個(gè)參數(shù)的順序顛倒了一下,別的基本一樣。
?因?yàn)閖avascript的運(yùn)行機(jī)制的原因,jquery作為成熟的工具,為javascript提供了大量的回調(diào)函數(shù)(callback)。
?因?yàn)榛卣{(diào)函數(shù)的工作原理以及工作時(shí)機(jī),很多新手對(duì)回調(diào)函數(shù)不能熟練運(yùn)用。回調(diào)函數(shù)的重要作用之一,就是在某項(xiàng)操作完成時(shí),進(jìn)行下一項(xiàng)操作。這兩項(xiàng)操作功能上不一定耦合,但是邏輯上卻必須耦合。意思是前一個(gè)操作實(shí)現(xiàn)的功能(效果)可以和回調(diào)函數(shù)實(shí)現(xiàn)的功能毫無聯(lián)系,但是二者在代碼邏輯上卻是耦合的。耦合的意思是說,當(dāng)一操作進(jìn)行后,二操作會(huì)緊跟進(jìn)行,二者的運(yùn)行關(guān)系密不可分。回調(diào)函數(shù)增加了程序的耦合性,使代碼的邏輯更容易理解。
?回調(diào)函數(shù)的用處在javascript中可謂處處體現(xiàn),比如最為重要的就是AJAX回調(diào)。
?Jquery中提供了大量大回調(diào)函數(shù),比如complete,success,fail等操作。這些操作的調(diào)用時(shí)機(jī)就如同他們的名字一樣。success以為著成功的時(shí)候調(diào)用,等。
舉個(gè)簡(jiǎn)單的例子,以jquery中的動(dòng)畫為例,現(xiàn)在我想實(shí)現(xiàn)一個(gè)讓id為animate的dom對(duì)象寬度邊長(zhǎng)的動(dòng)畫,在這個(gè)對(duì)象變長(zhǎng)之后,我想要提示用戶,這個(gè)對(duì)象已經(jīng)變長(zhǎng)了。因此,我得使用以下的代碼:
$("#animate").animate({
width:?200
},?{
duration:?500,
success:?function()?{
alert("width?已經(jīng)變長(zhǎng)了");
},
error:?function()?{
alert("出現(xiàn)了錯(cuò)誤");
}
});
以上的代碼定義了兩個(gè)回調(diào)函數(shù)success和error,顧名思義,success是在成功的時(shí)候就會(huì)調(diào)用,error是在出錯(cuò)誤之后調(diào)用。
這就是回調(diào)函數(shù)的基本運(yùn)用。
看到這兒,或許你會(huì)問,為什么我不直接用這樣的代碼呢?
try?{
$("#animate").animate({
width:?2000
},?500,?"linear");
alert(""width已經(jīng)變長(zhǎng)了);
}?catch(error)?{
alert("出錯(cuò)了");
}
如果你測(cè)試你會(huì)發(fā)現(xiàn),動(dòng)畫并未完成,就出現(xiàn)了alert彈窗。
這就是javascript的運(yùn)行機(jī)制所造成的,javascript的運(yùn)行機(jī)制分為同步和異步,異步操作會(huì)破壞腳本的執(zhí)行流,使得程序跳過異步(異步仍然在進(jìn)行)而進(jìn)入接下來的程序,異步操作即使在進(jìn)行,也不會(huì)影響javascript的繼續(xù)執(zhí)行,也就是不會(huì)產(chǎn)生阻塞。同步操作中的定時(shí)操作有著與異步很相似的運(yùn)行機(jī)制,但是依然是同步操作。以上的錯(cuò)誤正是由于定時(shí)操作引起的。
回調(diào)函數(shù)的作用,最為重要的運(yùn)用,就是運(yùn)用在異步操作和定時(shí)操作。
jquery中運(yùn)用回調(diào)函數(shù)最重要的地方有兩個(gè),一個(gè)是動(dòng)畫回調(diào)(就是在動(dòng)畫執(zhí)行完成,或者執(zhí)行錯(cuò)誤,或者執(zhí)行失敗的時(shí)候調(diào)用),以及ajax(同動(dòng)畫)。ajax與回調(diào)是密不可分的。
jquery.on()超級(jí)方法
歸納
在jquery的on方法中實(shí)現(xiàn)事件委托就更簡(jiǎn)單了,on方法可以接受三個(gè)參數(shù):
第一個(gè)參數(shù)是事件名,可以只綁定一個(gè)事件,如on('click'),也可以綁定多個(gè)事件,如on('click dbclick mouseover')等
第二個(gè)參數(shù)是可選參數(shù),接受一個(gè)selector,當(dāng)事件觸發(fā)元素符合selector時(shí),會(huì)調(diào)用事件處理函數(shù)
注:此處用到 li:even 選擇器,后面有注解
第三個(gè)參數(shù)是自定義事件處理的回調(diào)函數(shù)。
1.jQuery :even 選擇器
選取每個(gè)帶有偶數(shù) index 值的元素(比如 2、4、6)
index 值從 0 開始,所有第一個(gè)元素是偶數(shù) (0)
2.jQuery :odd 選擇器
選取每個(gè)帶有奇數(shù) index 值的元素(比如 1、3、5)
jQuery中用on來綁定事件,常用寫法
兩種寫法哪個(gè)更好?
1. $(document).on 將事件委托document, $('#idname').on 將事件綁定到.className元素上。每次document有點(diǎn)擊動(dòng)作,瀏覽器都會(huì)判斷當(dāng)前點(diǎn)擊的對(duì)象。如果匹配再?zèng)Q定要不要執(zhí)行,多了個(gè)判斷環(huán)節(jié)。JS渲染效率很高,所以此異同基本可以忽略。
2. $("className").on 為onclick綁定,只有在頁面onload時(shí)執(zhí)行一次。頁面刷新后,新加載的具有className的元素便沒有事件綁定到上面了。相反$(document).on這種方法會(huì)刷新和重新賦予綁定操作,所以一定程度上更為全面。
按照hmtl的標(biāo)準(zhǔn)來的話 圖片是會(huì)覆蓋任何html控件的 唯一的辦法就是讓他們錯(cuò)開 也就是把圖片移開一點(diǎn) 設(shè)置position:absolute left和top就可以對(duì)其進(jìn)行定位
.on()方法事件處理程序到當(dāng)前選定的jQuery對(duì)象中的元素。
.on( events [, selector ] [, data ], handler(eventObject) )
events:類型: String
一個(gè)或多個(gè)空格分隔的事件類型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
selector:類型: String
一個(gè)選擇器字符串,用于過濾出被選中的元素中能觸發(fā)事件的后代元素。如果選擇器是 null 或者忽略了該選擇器,那么被選中的元素總是能觸發(fā)事件。
data:類型: Anything
當(dāng)一個(gè)事件被觸發(fā)時(shí),要傳遞給事件處理函數(shù)的event.data。
handler(eventObject):類型: Function()
事件被觸發(fā)時(shí),執(zhí)行的函數(shù)。若該函數(shù)只是要執(zhí)行return false的話,那么該參數(shù)位置可以直接簡(jiǎn)寫成 false。
本文標(biāo)題:jqueryon回調(diào),jquery 回調(diào)
URL分享:http://chinadenli.net/article16/dsgsodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、用戶體驗(yàn)、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、全網(wǎng)營(yíng)銷推廣、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)