欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年10月26日 10:54:21   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談jquery之on()綁定事件和off()解除綁定事件。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

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

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

語法

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

用法一:

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

用法二:

jQueryObject.off( eventsMap [, selector ] )

參數(shù)

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

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

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

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

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

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

返回值
off()函數(shù)的返回值為jQuery類型,返回當(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>

頁面加載時(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"); 無法移除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開始,on()函數(shù)提供了綁定事件處理程序所需的所有功能,用于統(tǒng)一取代以前的bind()、 delegate()、 live()等事件函數(shù)。

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

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

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

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

語法

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

用法一:

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

用法二:

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

參數(shù)

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

重要說明:

on()函數(shù)并不是為當(dāng)前jQuery對(duì)象匹配的元素綁定事件處理函數(shù),而是為它們的后代元素中符合選擇器selector參數(shù)的元素綁定事件處理函數(shù)。on()函數(shù)并不是直接為這些后代元素挨個(gè)綁定事件,而是委托給當(dāng)前jQuery對(duì)象的匹配元素來處理。由于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ī)淼臏\談jquery之on()綁定事件和off()解除綁定事件全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評(píng)論