事件的這幾個(gè)特性在0級(jí)dom中也是適用的。(2)jquery阻止事件起泡實(shí)例 通過返回false來取消默認(rèn)的行為并阻止事件起泡。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),安平網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安平等地區(qū)。安平做網(wǎng)站價(jià)格咨詢:18980820575
return false;事件委托就是利用冒泡的原理,把事件加到父級(jí)上,通過判斷事件來源的子集,執(zhí)行相應(yīng)的操作,事件委托首先可以極大減少事件綁定次數(shù),提高性能;其次可以讓新加入的子元素也可以擁有相同的操作。
首先:你不想使用的方法恰恰是推薦的最好的方法,為什么不用推薦的方法呢。
事件冒泡:開始時(shí)由最具體的元素接收,然后逐級(jí)向上傳播到到 DOM 最頂層節(jié)點(diǎn)。
瀏覽器在解析時(shí)候,要過兩遍HTML,一次是從上而下,稱為事件捕獲;一次從下而上,稱為事件冒泡(關(guān)于事件冒泡和事件捕獲,這里就不詳細(xì)說了)。
.bind()是直接綁定在元素上 .live()則是通過冒泡的方式來綁定到元素上的。更適合列表類型的,綁定到document DOM節(jié)點(diǎn)上。和.bind()的優(yōu)勢是支持動(dòng)態(tài)數(shù)據(jù)。
事件冒泡的作用:事件冒泡允許多個(gè)操作被集中處理(把事件處理器添加到一個(gè)父級(jí)元素上,避免把事件處理器添加到多個(gè)子級(jí)元素上),它還可以讓你在對(duì)象層的不同級(jí)別捕獲事件。
//...});假設(shè)你的.ontest一開始不存在DOM結(jié)構(gòu)當(dāng)中,也就是html里面,如果你直接click(function () {});的話,事件是無法成功綁定的,而用on委托給document的話,在事件冒泡的時(shí)候,就可以成功出發(fā)綁定的事件。
停止冒泡的方式:e.stopPropagation();第一種事件模型,在html中直接綁定事件:首先看一下瀏覽器事件模型:這種方式將行為和HTML混在了一起,沒有實(shí)現(xiàn)行為與內(nèi)容相分離。并且不能同時(shí)綁定多個(gè)事件。
事件的傳播是有方向的,當(dāng)點(diǎn)擊一個(gè)按鈕時(shí)所產(chǎn)生的事件從這個(gè)按鈕處開始向上傳播(就像一個(gè)水泡從杯底冒上來,這就是之所以叫事件冒泡的原因),但這個(gè)事件總是尋找特定的屬性是否有值。
return false;事件委托就是利用冒泡的原理,把事件加到父級(jí)上,通過判斷事件來源的子集,執(zhí)行相應(yīng)的操作,事件委托首先可以極大減少事件綁定次數(shù),提高性能;其次可以讓新加入的子元素也可以擁有相同的操作。
e.stopPropagation()方法不再派發(fā)事件。終止事件在傳播過程的捕獲、目標(biāo)處理或起泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點(diǎn)上處理該事件的處理程序?qū)⒈徽{(diào)用,事件不再被分派到其他節(jié)點(diǎn)。
阻止事件冒泡可以防止觸發(fā)父元素上面綁定的事件。比如: 123 1234在parnet上面和child上面都綁定click事件,并且打印1234,當(dāng)你點(diǎn)擊child的div時(shí),會(huì)發(fā)現(xiàn)打印兩次。
可以通過以下三種方法做到不同程度的阻止。A:return false ---In event handler ,prevents default behavior and event bubbing 。return false 在事件的處理中,可以阻止默認(rèn)事件和冒泡事件。
一個(gè)事件起泡對(duì)應(yīng)觸發(fā)的是上層的同一事件 特殊:如果two設(shè)置成雙擊事件,那么在你單擊two的時(shí)候就會(huì)起泡觸發(fā)one單擊的事件 (雙擊包含單擊)。
return false;事件委托就是利用冒泡的原理,把事件加到父級(jí)上,通過判斷事件來源的子集,執(zhí)行相應(yīng)的操作,事件委托首先可以極大減少事件綁定次數(shù),提高性能;其次可以讓新加入的子元素也可以擁有相同的操作。
e.stopPropagation()方法不再派發(fā)事件。終止事件在傳播過程的捕獲、目標(biāo)處理或起泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點(diǎn)上處理該事件的處理程序?qū)⒈徽{(diào)用,事件不再被分派到其他節(jié)點(diǎn)。
事件委托也稱為事件代理, 在 jQuery 里面稱為事件委派。 不是每個(gè)子節(jié)點(diǎn)單獨(dú)設(shè)置事件監(jiān)聽器,而是事件監(jiān)聽器設(shè)置在其父節(jié)點(diǎn)上,然后利用冒泡原理影響設(shè)置每個(gè)子節(jié)點(diǎn)。
不得不說,做法需要調(diào)整下,本來每個(gè) li 所綁定的事件都是不同,為何要用一個(gè)事件呢?(#left_ul li) 是頂級(jí)菜單 (#left_ul li ul li)是子集菜單 這樣做,2級(jí)菜單就滿足了。
1、使用stopPropagation() 方法;e.stopPropagation()方法不再派發(fā)事件。終止事件在傳播過程的捕獲、目標(biāo)處理或起泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點(diǎn)上處理該事件的處理程序?qū)⒈徽{(diào)用,事件不再被分派到其他節(jié)點(diǎn)。
2、事件委托就是利用冒泡的原理,把事件加到父級(jí)上,通過判斷事件來源的子集,執(zhí)行相應(yīng)的操作,事件委托首先可以極大減少事件綁定次數(shù),提高性能;其次可以讓新加入的子元素也可以擁有相同的操作。
3、標(biāo)準(zhǔn)寫法:利用事件對(duì)象里面的 stopPropagation()方法 e.stopPropagation() 非標(biāo)準(zhǔn)寫法:IE 6-8 利用事件對(duì)象 cancelBubble 屬性 e.cancelBubble = true;事件委托也稱為事件代理, 在 jQuery 里面稱為事件委派。
4、或者它到達(dá)了對(duì)象層次的最頂層,即document對(duì)象(有些瀏覽器是window)。
5、jQuery事件委托、冒泡。(#slider).on(mouseover,li,function(){ (this).animate({opacity:0.6});});這樣改,試一下。
6、為何要用一個(gè)事件呢?(#left_ul li) 是頂級(jí)菜單 (#left_ul li ul li)是子集菜單 這樣做,2級(jí)菜單就滿足了。如果你想做無限極的菜單,那么先考慮系統(tǒng)是否用得到,科研和工作最好分開嘛。
1、事件冒泡:開始時(shí)由最具體的元素接收,然后逐級(jí)向上傳播到到 DOM 最頂層節(jié)點(diǎn)。
2、e.stopPropagation()方法不再派發(fā)事件。終止事件在傳播過程的捕獲、目標(biāo)處理或起泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點(diǎn)上處理該事件的處理程序?qū)⒈徽{(diào)用,事件不再被分派到其他節(jié)點(diǎn)。
3、當(dāng)我們點(diǎn)擊子元素,觸發(fā)的時(shí)事件會(huì)傳遞給父元素,這就是事件冒泡。
4、為何要用一個(gè)事件呢?(#left_ul li) 是頂級(jí)菜單 (#left_ul li ul li)是子集菜單 這樣做,2級(jí)菜單就滿足了。如果你想做無限極的菜單,那么先考慮系統(tǒng)是否用得到,科研和工作最好分開嘛。