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