.on()方法事件處理程序到當(dāng)前選定的jQuery對(duì)象中的元素。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、岫巖網(wǎng)站維護(hù)、網(wǎng)站推廣。
.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ù)位置可以直接簡寫成 false。
概述
1、#Grid1Table不是#conut的父節(jié)點(diǎn),p標(biāo)簽是#logout的父節(jié)點(diǎn)
2、代碼寫法:
$('p').on('click', '#count', function() {
//function code here.
});
解析
1、p包裹a標(biāo)簽(id = logout),所以logout的父節(jié)點(diǎn)(父標(biāo)簽)為p(沒有標(biāo)注id或者class)
pa href='#' id='logout'【退出】/a/p
2、$("#logout").on('click',function() 方法要求參數(shù)為非隨動(dòng)變量(全局變量),所以#logout為不可行參數(shù),且由于代碼沒有貼全所以這里我先斷定#Grid1Table為非父節(jié)點(diǎn),而p為#logout父節(jié)點(diǎn),所以這里可以改成:
$('p').on('click', '#count', function() {
//function code here.
});
拓展內(nèi)容
juqery on()方法詳解
定義和用法
on() 方法在被選元素及子元素上添加一個(gè)或多個(gè)事件處理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。該方法給 API 帶來很多便利,我們推薦使用該方法,它簡化了 jQuery 代碼庫。
注意:使用 on() 方法添加的事件處理程序適用于當(dāng)前及未來的元素(比如由腳本創(chuàng)建的新元素)。
提示:如需移除事件處理程序,請(qǐng)使用?off()?方法。
提示:如需添加只運(yùn)行一次的事件然后移除,請(qǐng)使用?one()?方法。
語法
$(selector).on(event,childSelector,data,function)
參數(shù)
event ? ?????????????必需。規(guī)定要從被選元素移除的一個(gè)或多個(gè)事件或命名空間。由空格分隔多個(gè)事件值,也可以是數(shù)組。必須是有效的事件。 ?
childSelector ? ?可選。規(guī)定只能添加到指定的子元素上的事件處理程序(且不是選擇器本身,比如已廢棄的 delegate() 方法)。 ?
data ? ?????????????? 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 ?
function ? ?????????可選。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 ?
jquery.on()超級(jí)方法
歸納
在jquery的on方法中實(shí)現(xià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)
events:一個(gè)或多個(gè)用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 。
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ù)的簡寫,返回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()的原理很簡單,它是通過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ù)的順序顛倒了一下,別的基本一樣。