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)單的寫(xiě)法 綁定單個(gè)事件執(zhí)行事件函數(shù),
$("p").bind("click",function(){
alert("這個(gè)段落被點(diǎn)擊了。");
});這樣寫(xiě)跟普通的寫(xiě)法沒(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映射(分開(kāi)寫(xiě))的方法,就可以各自執(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書(shū)寫(xiě)順序不同 這個(gè)on要先寫(xiě)事件
| 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)文章
解決微信內(nèi)置瀏覽器返回上一頁(yè)強(qiáng)制刷新問(wèn)題方法
微信內(nèi)置瀏覽器在返回上一頁(yè)面,且上一頁(yè)面包含AJAX代碼時(shí),頁(yè)面就會(huì)被強(qiáng)制刷新,極度影響用戶體驗(yàn)。而我們想要的效果是:返回上一頁(yè)面時(shí),頁(yè)面還停留在原來(lái)的狀態(tài),AJAX獲取到的數(shù)據(jù)還在,滾動(dòng)條也在原來(lái)的位置。下面跟著小編一起來(lái)看下吧2017-02-02
BootStrap table實(shí)現(xiàn)表格行拖拽效果
這篇文章主要為大家詳細(xì)介紹了BootStrap table實(shí)現(xiàn)表格行拖拽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
AJAX異步從優(yōu)酷專輯中采集所有視頻及信息(JavaScript代碼)
上次寫(xiě)了一個(gè) .NET從優(yōu)酷專輯中采集所有視頻及信息(VB.NET代碼)2010-11-11
一文搞懂JavaScript如何實(shí)現(xiàn)圖片懶加載
圖片懶加載,往往作為減少首頁(yè)白屏?xí)r間的一個(gè)解決方案而出現(xiàn)。本文將通過(guò)示例帶大家一起探究一下JavaScript是如何實(shí)現(xiàn)圖片懶加載的,感興趣的可以了解一下2022-06-06
完美解決spring websocket自動(dòng)斷開(kāi)連接再創(chuàng)建引發(fā)的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決spring websocket自動(dòng)斷開(kāi)連接再創(chuàng)建引發(fā)的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03

