成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? 淺談jquery之on()綁定事件和off()解除綁定事件
全站頭部文字 我要出現(xiàn)在這里
淺談jquery之on()綁定事件和off()解除綁定事件 781 2024-02-14   

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" >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)容了,希望大家多多支持綠夏網(wǎng)~


主站蜘蛛池模板: 《竹升妹之以牙还牙》| 大尾鲈鳗| 言承旭电影| 张芸| call me by your name电影| 九州电影网| 好看的拉片| 雅雅英| 飞虎神鹰1-42集免费| 秦腔《铡美案》全本| 抗战电视剧大全免费| 朱茉颜| 深流 电视剧| 张国立电影作品大全| 刘慧茹| 斯维特拜克之歌| 误杀1演员表| 阎良之窗| 老板娘2无间潜行 电影| 杨玉环一级片| 高志鹏| lanarhoades在线av| 笼中鸟完整版| 香水有毒微电影无删减完整版 | 我的老婆又大肚| 电视剧零下三十八度手机免费观看| 必修二英语电子课本外研版| 成人在线影片| 海滩乱淫欧美aⅴ大片| 画魂 电影| 格伦·克洛斯| 狂野殴美激情性bbbbbb| 我在皇宫当巨巨| 金瑞亨为艺术奉献的电影有哪些| 一万个伤心的理由| 蒂塔万提斯全集免费观看| 男国少年梦 电影| 翟佳滨老师今天答案| 珠江电视台直播 珠江频道| 爱神的诱惑| 同志电影副歌1080p|

?。?!站長(zhǎng)長(zhǎng)期在線接?。?!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103