jQuery?事件綁定及取消?bind?live?delegate?on?one區(qū)別解析
on bind delegate live one 四種方法差別不是特別大 bind講完后,后面的方法只會(huì)說(shuō)不同點(diǎn)
1.bind()
$(selector).bind(event,data,function,map)
event 必需。規(guī)定添加到元素的一個(gè)或多個(gè)事件。
event | 必需。規(guī)定添加到元素的一個(gè)或多個(gè)事件。 由空格分隔多個(gè)事件值。必須是有效的事件。 |
data | 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 |
function | 必需。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
map | 規(guī)定事件映射 ({event:function, event:function, ...}),包含要添加到元素的一個(gè)或多個(gè)事件,以及當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
最簡(jiǎn)單的寫法 綁定單個(gè)事件執(zhí)行事件函數(shù),
$("p").bind("click",function(){ alert("這個(gè)段落被點(diǎn)擊了。"); });
這樣寫跟普通的寫法沒(méi)區(qū)別 就沒(méi)必要使用綁定事件方法了
obj.click(function(){})
注:js同一個(gè)dom元素多次綁定同一事件,只會(huì)執(zhí)行最后一次的事件,所以如果有這種需求,需要使用addEventListener方法添加事件,jquery則不會(huì) 它會(huì)全部執(zhí)行,兩者都是同時(shí)執(zhí)行,并不是按順序一一執(zhí)行。
bind()方法可以進(jìn)行多個(gè)事件綁定,添加回調(diào)函數(shù),
$(document).ready(function(){ $("p").bind("mouseover mouseout",function(){ $("p").toggleClass("intro"); }); });
兩個(gè)事件分別執(zhí)行一次函數(shù)內(nèi)容,如果要事件單獨(dú)執(zhí)行各自的函數(shù) 可以使用map映射(分開寫)的方法,就可以各自執(zhí)行了,
$(document).ready(function(){ $("button").bind({ click:function(){$("p").slideToggle();}, mouseover:function(){$("body").css("background-color","#E9E9E4");}, }); });
或者添加多個(gè)事件后 ,函數(shù)使用event.type來(lái)判斷是哪一個(gè)事件來(lái)進(jìn)行各自的函數(shù)內(nèi)容。
$(document).ready(function(){ $("p").bind("click dblclick mouseover mouseout",function(e){ if(e.type == 'click'){ alert('這是click事件') }else if(e.type == 'dblclick'){ alert('這是dbclick事件') } }); });
data是可選的額外添加的數(shù)據(jù),函數(shù)中可以用event.data接受使用。
$(document).ready(function(){ $("p").bind("click", {msg: "你剛點(diǎn)擊了!"}, function handlerName(e){ alert(e.data.msg); }) });
取消綁定用 unbind()方法
$("button").click(function(){ $("p").unbind(); //取消p標(biāo)簽所有綁定的事件 });
unction alertMe() { alert("Hello World!"); } $(document).ready(function(){ $("p").click(alertMe); $("p").click(function(){ alert(123)}); $("button").click(function(){ $("p").unbind("click",alertMe); //將p標(biāo)簽單擊調(diào)用alertMe的事件取消 }); });
$(document).ready(function(){ var x=0; $("p").click(function(e){ $("p").animate({fontSize:"+=5px"}); x++; if (x>=2) { $(this).unbind(e); //還可以通過(guò)取消參數(shù) 來(lái)接觸事件 } }); });
2.live()
event | 必需。規(guī)定添加到元素的一個(gè)或多個(gè)事件。 由空格分隔多個(gè)事件值。必須是有效的事件。 |
data | 可選。規(guī)定傳遞到該函數(shù)的額外數(shù)據(jù)。 |
function | 必需。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
和bind方法有兩個(gè)不同
1.沒(méi)有map不能單獨(dú)規(guī)定事件
2.live方法綁定的事件會(huì)應(yīng)用于當(dāng)前現(xiàn)有的元素以及未來(lái)元素,也就是事件委托機(jī)制,把節(jié)點(diǎn)的處理統(tǒng)一委托給了根節(jié)點(diǎn)document,所以后面動(dòng)態(tài)添加的新節(jié)點(diǎn)同樣會(huì)有相同的事件。
$("button").live("click",function(){ $("p").slideToggle(); //給所有的p節(jié)點(diǎn)添加了收縮事件,包括動(dòng)態(tài)添加的新的p標(biāo)簽 });
注:使用live()方法只能放在直接選擇的元素后面,不能在層級(jí)比較深,連綴的DOM遍歷方法后面使用,即$(“ul”").live...可以,但$("body").find("ul").live...不行;
取消綁定用die()方法 跟unbind()一樣。
3.delegate ()
$(selector).delegate(childSelector,event,data,function)
childSelector | 必需。規(guī)定要添加事件處理程序的一個(gè)或多個(gè)子元素。 |
event | 必需。規(guī)定添加到元素的一個(gè)或多個(gè)事件。 由空格分隔多個(gè)事件值。必須是有效的事件。 |
data | 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 |
function | 必需。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
這個(gè)方法就相當(dāng)于加強(qiáng)版的live()方法,由于live方法事件委托會(huì)直接委托在根節(jié)點(diǎn)上,費(fèi)時(shí)費(fèi)力,
于是就有了delegate()方法,它可以選擇委托范圍,就是給selector父節(jié)點(diǎn)內(nèi)的所有childSelector子節(jié)點(diǎn)綁定事件。
$(document).ready(function(){ $("div").delegate("p","click",function(){ //給div里的p標(biāo)簽綁定事件 $(this).slideToggle(); }); $("button").click(function(){ $("<p>這是一個(gè)新段落。</p>").insertAfter("button");//動(dòng)態(tài)添加的新標(biāo)簽會(huì)保留事件 }); });
undelegate()取消綁定事件
4.on()
究極進(jìn)化的產(chǎn)物,集前面三位所長(zhǎng)為一身,也是最推薦用的,在版本更新迭代中,前面三位有的無(wú)了。
$(selector).on(event,childSelector,data,function) 和delegate書寫順序不同 這個(gè)on要先寫事件
event | 必需。規(guī)定要從被選元素添加的一個(gè)或多個(gè)事件或命名空間。 由空格分隔多個(gè)事件值,也可以是數(shù)組。必須是有效的事件。 |
childSelector | 可選。規(guī)定只能添加到指定的子元素上的事件處理程序(且不是選擇器本身,比如已廢棄的 delegate() 方法)。 |
data | 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 |
function | 可選。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
它既可以給單個(gè)標(biāo)簽綁定事件,有map映射,也可以自主選擇事件委托對(duì)象給后面動(dòng)態(tài)創(chuàng)建的節(jié)點(diǎn)綁定事件。
取消綁定事件的方法是off()
這里就不做演示了 跟上面的大同小異,大家趕快去試試吧!
5.one()
$(selector).one(event,data,function)
event | 必需。規(guī)定添加到元素的一個(gè)或多個(gè)事件。 由空格分隔多個(gè)事件值。必須是有效的事件。 |
data | 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 |
function | 必需。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 |
one()方法相當(dāng)于bind區(qū)別是one只執(zhí)行一次,就會(huì)自動(dòng)解除事件.
$(document).ready(function(){ $("p").one("click",function(){ $(this).animate({fontSize:"+=6px"}); }); });
到此這篇關(guān)于jquery 事件綁定及取消 bind live delegate on one區(qū)別 (超詳細(xì)且通俗易懂)的文章就介紹到這了,更多相關(guān)jquery 事件綁定及取消內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- jquery事件綁定方法介紹
- jQuery事件綁定和解綁、事件冒泡與阻止事件冒泡及彈出應(yīng)用示例
- jQuery實(shí)現(xiàn)的事件綁定功能基本示例
- jQuery的三種bind/One/Live/On事件綁定使用方法
- jQuery 全選 全不選 事件綁定的實(shí)現(xiàn)代碼
- jQuery事件綁定方法學(xué)習(xí)總結(jié)(推薦)
- jquery移除了live()、die(),新版事件綁定on()、off()的方法
- 關(guān)于Jquery中的事件綁定總結(jié)
- jquery事件綁定解綁機(jī)制源碼解析
- jQuery事件綁定用法詳解
- 深入理解jQuery事件綁定
- jQuery事件綁定on()與彈窗實(shí)現(xiàn)代碼
- jQuery事件綁定用法詳解(附bind和live的區(qū)別)
- jQuery實(shí)現(xiàn)按鈕只點(diǎn)擊一次后就取消點(diǎn)擊事件綁定的方法
- JQuery中DOM事件綁定用法詳解
- jQuery事件綁定on()、bind()與delegate() 方法詳解
- jQuery事件綁定與解除綁定實(shí)現(xiàn)方法
- jquery中click等事件綁定及移除的幾種方法小結(jié)
相關(guān)文章
通過(guò)JavaScript實(shí)現(xiàn)圖片壓縮
在學(xué)習(xí)的時(shí)候,有時(shí)候看到一些一些網(wǎng)站的圖片是經(jīng)過(guò)壓縮處理的,因?yàn)閴嚎s之后的圖片會(huì)節(jié)省一部分你的內(nèi)存空間,這樣的話也可以提升性能,于是就比較好奇這是如何實(shí)現(xiàn)的,今天我們就簡(jiǎn)單的實(shí)現(xiàn)一下,需要的朋友可以參考下2023-06-06JS實(shí)現(xiàn)iframe編輯器光標(biāo)位置插入內(nèi)容的方法(兼容IE和Firefox)
這篇文章主要介紹了JS實(shí)現(xiàn)iframe編輯器光標(biāo)位置插入內(nèi)容的方法,可實(shí)現(xiàn)文本與圖片的插入功能,并兼容IE和Firefox瀏覽器,需要的朋友可以參考下2016-06-06JavaScript實(shí)現(xiàn)焦點(diǎn)進(jìn)入文本框內(nèi)關(guān)閉輸入法的核心代碼
這篇文章給大家分享js實(shí)現(xiàn)焦點(diǎn)進(jìn)入文本框內(nèi)關(guān)閉輸入法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09微信小程序?qū)崿F(xiàn)環(huán)形進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)環(huán)形進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06微信小程序?qū)崿F(xiàn)tab頁(yè)面切換效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)tab頁(yè)面切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08js實(shí)現(xiàn)表單檢測(cè)及表單提示的方法
這篇文章主要介紹了js實(shí)現(xiàn)表單檢測(cè)及表單提示的方法,涉及javascript表單元素提示效果的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08原生JavaScript實(shí)現(xiàn)購(gòu)物車
這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01微信公眾平臺(tái)開發(fā)教程(四) 實(shí)例入門:機(jī)器人回復(fù)(附源碼)
本篇文章主要介紹了微信公眾平臺(tái)開發(fā)機(jī)器人,可以實(shí)現(xiàn)簡(jiǎn)單對(duì)話和查詢天氣等,有需要的可以了解一下。2016-12-12微信小程序?qū)崿F(xiàn)提交input信息到后臺(tái)的方法示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)提交input信息到后臺(tái)的方法,結(jié)合實(shí)例形式分析了微信小程序提交input信息到后臺(tái)相關(guān)事件響應(yīng)與數(shù)據(jù)處理操作技巧,需要的朋友可以參考下2019-01-01