国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

淺談jquery之on()綁定事件和off()解除綁定事件

2019-11-20 08:39:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

off()函數(shù)用于移除元素上綁定的一個(gè)或多個(gè)事件的事件處理函數(shù)。

off()函數(shù)主要用于解除由on()函數(shù)綁定的事件處理函數(shù)。

該函數(shù)屬于jQuery對(duì)象(實(shí)例)。

語(yǔ)法

jQuery 1.7 新增該函數(shù)。其主要有以下兩種形式的用法:

用法一:

jQueryObject.off( [ events [, selector ] [, handler ] ] )

用法二:

jQueryObject.off( eventsMap [, selector ] )

參數(shù)

參數(shù) 描述
events 可選/String類(lèi)型一個(gè)或多個(gè)用空格分隔的事件類(lèi)型和可選的命名空間,例如"click"、"focus click"、"keydown.myPlugin"。
eventsMap Object類(lèi)型一個(gè)Object對(duì)象,其每個(gè)屬性對(duì)應(yīng)事件類(lèi)型和可選的命名空間(參數(shù)events),屬性值對(duì)應(yīng)綁定的事件處理函數(shù)(參數(shù)handler)。
selector 可選/String類(lèi)型一個(gè)jQuery選擇器,用于指定哪些后代元素可以觸發(fā)綁定的事件。如果該參數(shù)為null或被省略,則表示當(dāng)前元素自身綁定事件(實(shí)際觸發(fā)者也可能是后代元素,只要事件流能到達(dá)當(dāng)前元素即可)。
handler 可選/Function類(lèi)型指定的事件處理函數(shù)。

off()函數(shù)將會(huì)移除當(dāng)前匹配元素上為后代元素selector綁定的events事件的事件處理函數(shù)handler。

如果省略參數(shù)selector,則移除為任何元素綁定的事件處理函數(shù)。

參數(shù)selector必須與通過(guò)on()函數(shù)添加綁定時(shí)傳入的選擇器一致。

如果省略參數(shù)handler,則移除指定元素指定事件類(lèi)型上綁定的所有事件處理函數(shù)。

如果省略了所有參數(shù),則表示移除當(dāng)前元素上為任何元素綁定的任何事件類(lèi)型的任何事件處理函數(shù)。

返回值
off()函數(shù)的返回值為jQuery類(lèi)型,返回當(dāng)前jQuery對(duì)象本身。

實(shí)際上,off()函數(shù)的參數(shù)全是篩選條件,只有匹配所有參數(shù)條件的事件處理函數(shù)才會(huì)被移除。參數(shù)越多,限定條件就越多,被移除的范圍就越小。

off()方法的代碼示例:

容易忽略的點(diǎn):off所解除元素的綁定事件,其中選擇器必須和on綁定事件時(shí)所用的選擇器一致。

html代碼

 <input id="btn1" type="button" value="點(diǎn)擊1" /> <input id="btn2" type="button" value="點(diǎn)擊2" /> <a id="a1" href="#">CodePlayer</a>

頁(yè)面加載時(shí)執(zhí)行的jquery代碼

function btnClick1(){  alert( this.value + "-1" );}function btnClick2(){  alert( this.value + "-2" );}var $body = $("body");// 給按鈕1綁定點(diǎn)擊$body.on("click", "#btn1", btnClick1 );// 給按鈕2綁定點(diǎn)擊$body.on("click", "#btn2", btnClick2 );//為所有a元素綁定click、mouseover、mouseleave事件$body.on("click mouseover mouseleave", "a", function(event){  if( event.type == "click" ){    $body.off("click", "#btn1");//取消btn1的綁定事件。成功執(zhí)行    alert("點(diǎn)擊事件");    alert("ddd");  }else if( event.type == "mouseover" ){    $(this).css("color", "red");  }else{    $(this).css("color", "blue");      }});// 移除body元素為所有button元素的click事件綁定的事件處理函數(shù)btnClick2// 點(diǎn)擊按鈕,btnClick1照樣執(zhí)行$body.off("click", ":button", btnClick2);// 點(diǎn)擊按鈕1,不會(huì)執(zhí)行任何事件處理函數(shù)// $body.off("click", "#btn1");// 注意: $body.off("click", ":button"); 無(wú)法移除btn1的點(diǎn)擊事件,off()函數(shù)指定的選擇器必須與on()函數(shù)傳入的選擇器一致。// 移除body元素為所有元素(包括button和<a>元素)的click事件綁定的所有處理函數(shù)// 點(diǎn)擊按鈕或鏈接,都不會(huì)觸發(fā)執(zhí)行任何事件處理函數(shù)// $("body").off("click");// 移除body元素為所有元素的任何事件綁定的所有處理函數(shù)// 點(diǎn)擊按鈕,或點(diǎn)擊鏈接或者鼠標(biāo)移入/移出鏈接,都不會(huì)觸發(fā)執(zhí)行任何事件處理函數(shù)// $("body").off( );

on()函數(shù)用于為指定元素的一個(gè)或多個(gè)事件綁定事件處理函數(shù)。

此外,你還可以額外傳遞給事件處理函數(shù)一些所需的數(shù)據(jù)。

從jQuery 1.7開(kāi)始,on()函數(shù)提供了綁定事件處理程序所需的所有功能,用于統(tǒng)一取代以前的bind()、 delegate()、 live()等事件函數(shù)。

即使是執(zhí)行on()函數(shù)之后新添加的元素,只要它符合條件,綁定的事件處理函數(shù)也對(duì)其有效。

此外,該函數(shù)可以為同一元素、同一事件類(lèi)型綁定多個(gè)事件處理函數(shù)。觸發(fā)事件時(shí),jQuery會(huì)按照綁定的先后順序依次執(zhí)行綁定的事件處理函數(shù)。

要?jiǎng)h除通過(guò)on()綁定的事件,請(qǐng)使用off()函數(shù)。如果要附加一個(gè)事件,只執(zhí)行一次,然后刪除自己,請(qǐng)使用one()函數(shù)。

該函數(shù)屬于jQuery對(duì)象(實(shí)例)。

語(yǔ)法

jQuery 1.7 新增該函數(shù)。其主要有以下兩種形式的用法:

用法一:

jQueryObject.on( events [, selector ] [, data ], handler )

用法二:

jQueryObject.on( eventsMap [, selector ] [, data ] )

參數(shù)

參數(shù) 描述
events String類(lèi)型一個(gè)或多個(gè)用空格分隔的事件類(lèi)型和可選的命名空間,例如"click"、"focus click"、"keydown.myPlugin"。
eventsMap Object類(lèi)型一個(gè)Object對(duì)象,其每個(gè)屬性對(duì)應(yīng)事件類(lèi)型和可選的命名空間(參數(shù)events),屬性值對(duì)應(yīng)綁定的事件處理函數(shù)(參數(shù)handler)。
selector 可選/String類(lèi)型一個(gè)jQuery選擇器,用于指定哪些后代元素可以觸發(fā)綁定的事件。如果該參數(shù)為null或被省略,則表示當(dāng)前元素自身綁定事件(實(shí)際觸發(fā)者也可能是后代元素,只要事件流能到達(dá)當(dāng)前元素即可)。
data 可選/任意類(lèi)型觸發(fā)事件時(shí),需要通過(guò)event.data傳遞給事件處理函數(shù)的任意數(shù)據(jù)。
handler Function類(lèi)型指定的事件處理函數(shù)

關(guān)于參數(shù)events中可選的命名空間,請(qǐng)參考最下面的示例代碼。

關(guān)于參數(shù)selector,你可以簡(jiǎn)單地理解為:如果該參數(shù)等于null或被省略,則為當(dāng)前匹配元素綁定事件;否則就是為當(dāng)前匹配元素的后代元素中符合selector選擇器的元素綁定事件。

參數(shù)handler中的this指向當(dāng)前匹配元素的后代元素中觸發(fā)該事件的DOM元素。如果參數(shù)selector等于null或被省略,則this指向當(dāng)前匹配元素(也就是該元素)。

on()還會(huì)為handler傳入一個(gè)參數(shù):表示當(dāng)前事件的Event對(duì)象。

參數(shù)handler的返回值與DOM原生事件的處理函數(shù)返回值作用一致。例如"submit"(表單提交)事件的事件處理函數(shù)返回false,可以阻止表單的提交。

如果事件處理函數(shù)handler僅僅只為返回false值,可以直接將handler設(shè)為false。

返回值

on()函數(shù)的返回值為jQuery類(lèi)型,返回當(dāng)前jQuery對(duì)象本身。

重要說(shuō)明:

on()函數(shù)并不是為當(dāng)前jQuery對(duì)象匹配的元素綁定事件處理函數(shù),而是為它們的后代元素中符合選擇器selector參數(shù)的元素綁定事件處理函數(shù)。on()函數(shù)并不是直接為這些后代元素挨個(gè)綁定事件,而是委托給當(dāng)前jQuery對(duì)象的匹配元素來(lái)處理。由于DOM 2級(jí)的事件流機(jī)制,當(dāng)后代元素selector觸發(fā)事件時(shí),該事件會(huì)在事件冒泡中傳遞給其所有的祖輩元素,當(dāng)事件流傳遞到當(dāng)前匹配元素時(shí),jQuery會(huì)判斷是哪個(gè)后代元素觸發(fā)了事件,如果該元素符合選擇器selector,jQuery就會(huì)捕獲該事件,從而執(zhí)行綁定的事件處理函數(shù)。

以上就是小編為大家?guī)?lái)的淺談jquery之on()綁定事件和off()解除綁定事件全部?jī)?nèi)容了,希望大家多多支持武林網(wǎng)~

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 潼南县| 舒城县| 武义县| 南乐县| 昌黎县| 潞城市| 泸定县| 西城区| 吉水县| 庄浪县| 天气| 乌拉特后旗| 临高县| 吴桥县| 巴彦淖尔市| 长治市| 阳山县| 鲁山县| 婺源县| 乌海市| 噶尔县| 株洲县| 五常市| 浪卡子县| 嘉禾县| 疏勒县| 诏安县| 日土县| 陇西县| 涿州市| 通化市| 平江县| 绥滨县| 涿州市| 包头市| 托里县| 资溪县| 石楼县| 兴化市| 栾川县| 石阡县|