欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

jquery事件冒泡,jquery事件冒泡是什么

jquery阻止事件冒泡有什么用

阻止事件冒泡可以防止觸發(fā)父元素上面綁定的事件。

創(chuàng)新互聯(lián)建站專(zhuān)注于古交網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供古交營(yíng)銷(xiāo)型網(wǎng)站建設(shè),古交網(wǎng)站制作、古交網(wǎng)頁(yè)設(shè)計(jì)、古交網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造古交網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供古交網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

比如:

div?class="parent"

div?class="child"123/div

1234

/div在parnet上面和child上面都綁定click事件,并且打印1234,當(dāng)你點(diǎn)擊child的div時(shí),會(huì)發(fā)現(xiàn)打印兩次。

事件冒泡是什么如何用jquery阻止事件冒泡

(1)什么是事件起泡

首先你要明白一點(diǎn),當(dāng)一個(gè)事件發(fā)生的時(shí)候,該事件總是有一個(gè)事件源,即引發(fā)這個(gè)事件的對(duì)象,一個(gè)事件不能憑空產(chǎn)生,這就是事件的發(fā)生。

當(dāng)事件發(fā)生后,這個(gè)事件就要開(kāi)始傳播。為什么要傳播呢?因?yàn)槭录幢旧聿](méi)有處理事件的能力。例如我們點(diǎn)擊一個(gè)按鈕時(shí),就會(huì)產(chǎn)生一個(gè)click事件,但這個(gè)按鈕本身不能處理這個(gè)事件(廢話),事件必須從這個(gè)按鈕傳播出去,從而到達(dá)能夠處理這個(gè)事件的代碼中(例如我們給按鈕的onclick屬性賦一個(gè)函數(shù)的名字,就是讓這個(gè)函數(shù)去處理該按鈕的click事件)。

當(dāng)事件在傳播過(guò)程中,找到了一個(gè)能夠處理它的函數(shù),這時(shí)候我們就說(shuō)這個(gè)函數(shù)捕捉到了這個(gè)事件。

說(shuō)到這里,關(guān)鍵的問(wèn)題來(lái)了,那就是一個(gè)函數(shù)是如何捕捉一個(gè)事件的呢?這就涉及到事件的冒泡了。

為了更好地理解冒泡的概念,我建議你現(xiàn)在想象一下你的面前放著一杯水,但這杯水和我們平時(shí)看到的有點(diǎn)點(diǎn)不同,它分為數(shù)層,每一層又分成一或多個(gè)區(qū)域,最頂層是我們熟悉的窗口對(duì)象(即window對(duì)象),下一層分為好幾個(gè)區(qū)域(document對(duì)象、history對(duì)象等等),而document對(duì)象的下一層又分為多個(gè)子對(duì)象。

這些對(duì)象的層次關(guān)系構(gòu)成了DOM中的對(duì)象樹(shù)。

事件的傳播是有方向的,當(dāng)點(diǎn)擊一個(gè)按鈕時(shí)所產(chǎn)生的事件從這個(gè)按鈕處開(kāi)始向上傳播(就像一個(gè)水泡從杯底冒上來(lái),這就是之所以叫事件冒泡的原因),但這個(gè)事件總是尋找特定的屬性是否有值。例如按鈕的click事件先尋找在按鈕上是否有onclick屬性的有意義的定義(即該屬性指向一個(gè)存在的函數(shù)或一段可執(zhí)行的語(yǔ)句),如果有,執(zhí)行這個(gè)函數(shù)或語(yǔ)句;然后事件繼續(xù)向上傳播,到達(dá)按鈕的上一層對(duì)象(例如一個(gè)form對(duì)象或document對(duì)象,總之是包含了按鈕的父對(duì)象),如果該對(duì)象也定義了onclick屬性,則執(zhí)行屬性的值。

所以,如果這個(gè)按鈕上面有3層(form、document、window),且這三層都定義了onclick屬性,則當(dāng)按鈕的click事件產(chǎn)生時(shí),將會(huì)調(diào)用4個(gè)(包括按鈕本身的一個(gè))函數(shù)或執(zhí)行4段語(yǔ)句。

事件的這幾個(gè)特性在0級(jí)dom中也是適用的。

(2)jquery阻止事件起泡實(shí)例

1、通過(guò)返回false來(lái)取消默認(rèn)的行為并阻止事件起泡。

jQuery 代碼:

復(fù)制代碼 代碼如下:

$("form").bind(

"submit",

function() {

return false;

}

);

2、通過(guò)使用 preventDefault() 方法只取消默認(rèn)的行為。

jQuery 代碼:

復(fù)制代碼 代碼如下:

$("form").bind(

"submit",

function(event){

event.preventDefault();

}

);

3、通過(guò)使用 stopPropagation() 方法只阻止一個(gè)事件起泡。

jQuery 代碼:

復(fù)制代碼 代碼如下:

$("form").bind(

"submit",

function(event){

event.stopPropagation();

}

);

(3)關(guān)于js事件起泡的驗(yàn)證

今天這個(gè)問(wèn)題主要涉及到幾個(gè)關(guān)鍵詞:對(duì)象,觸發(fā)事件,捕獲事件,執(zhí)行處理、起泡。這其實(shí)就是整個(gè)js執(zhí)行的過(guò)程。其中冒泡這個(gè)過(guò)程很有意思。其實(shí)就像是一杯水,但是這杯水是分層次的,最底下是當(dāng)前觸發(fā)事件的對(duì)象。然后越往上范圍越大,最頂層肯定是window,倒數(shù)第二層是document。氣泡在上浮過(guò)程中會(huì)判斷當(dāng)前所到達(dá)的層有沒(méi)有綁定事件處理方法。有話就執(zhí)行相應(yīng)的處理。沒(méi)有的話就繼續(xù)起泡。直到到達(dá)最頂層的window窗口層。我們可以在任何一層做相應(yīng)的處理以阻止事件繼續(xù)起泡。方法就是調(diào)用事件對(duì)象的阻止起泡的方法。event.stopPropagation();下面是寫(xiě)的一個(gè)驗(yàn)證js事件起泡的過(guò)程方法。

復(fù)制代碼 代碼如下:

script type="text/javascript"

$(document).ready(function(){

$('.one').click(function(e){

alert('one');

});

$('.two').click(function(e){  

alert('two');

});

$('.three').click(function(e){

alert('three');

//阻止起泡取消下面的注釋

// e.stopPropagation();

});

});

/script

div class="one" style="width:200px;height:200px;background:green;"

one

div class="two" style="width:150px;height:150px;background:yellow;"

two

div class="three"

three

/div

/div

/div

(4)總結(jié)

1.一個(gè)事件起泡對(duì)應(yīng)觸發(fā)的是上層的同一事件

特殊:如果two設(shè)置成雙擊事件,那么在你單擊two的時(shí)候就會(huì)起泡觸發(fā)one單擊的事件

(雙擊包含單擊)。

2.如果在click事件中,在你要處理的事件之前加上e.preventDefault();

那么就取消了行為(通俗理解:相當(dāng)于做了個(gè)return操作),不執(zhí)行之后的語(yǔ)句了。

3.e.stopPropagation()只要在click事件中,就不會(huì)觸發(fā)上層click事件。

jQuery中bind()怎么去除事件冒泡

使用stopPropagation() 方法;

e.stopPropagation()方法不再派發(fā)事件。終止事件在傳播過(guò)程的捕獲、目標(biāo)處理或起泡階段進(jìn)一步傳播。調(diào)用該方法后,該節(jié)點(diǎn)上處理該事件的處理程序?qū)⒈徽{(diào)用,事件不再被分派到其他節(jié)點(diǎn)。

例:div點(diǎn)擊事件阻止冒泡;

html

div id="div1"div id="div2"/div/div

js

$("#div2").bind("click",function(e){

e.stopPropagation();//阻止事件冒泡,點(diǎn)擊div2的時(shí)候?qū)⒉话l(fā)生點(diǎn)擊div1的事件;

});

jquery怎么阻止新添加的元素的事件冒泡

在火狐Firefox、opera、IE下阻止冒泡事件是不同的代碼的,火狐下使用的是event.stopPropagation(),而IE下使用的是cancelBubble,jQuery 可以使用e.stopPropagation()就可以兼容了,如果是純粹的JavaScript需要下面的代碼來(lái)統(tǒng)一:

if (event.stopPropagation) {

// this code is for Mozilla and Opera

event.stopPropagation();

}

else if (window.event) {

// this code is for IE

window.event.cancelBubble = true;

}

-

jquery 事件冒泡怎么解決

你現(xiàn)在這么寫(xiě)是有問(wèn)題的

每次點(diǎn)擊a都會(huì)給b綁定一個(gè)事件

當(dāng)你點(diǎn)第二次a時(shí) b就有了2個(gè)alert事件 所以會(huì)執(zhí)行2次

如果你想建立依賴(lài)關(guān)系 ?可以換種思路

不妨通過(guò)一個(gè)flag 來(lái)保存a的點(diǎn)擊狀態(tài)

當(dāng)a點(diǎn)擊過(guò) 則b的點(diǎn)擊要執(zhí)行的代碼生效

var?aClicked?=?false?;

$(".a").click(function(){

alert("a");

aClicked?=?true;

});

$(".b").click(function(){

//?這樣來(lái)建立依賴(lài)關(guān)系

if(aClicked){

alert("b");

}

});

jquery如何阻止事件冒泡

在一個(gè)對(duì)象上觸發(fā)某類(lèi)事件(比如單擊onclick事件),如果此對(duì)象定義了此事件的處理程序,那么此事件就會(huì)調(diào)用這個(gè)處理程序,如果沒(méi)有定義此事件處理程序或者事件返回true,那么這個(gè)事件會(huì)向這個(gè)對(duì)象的父級(jí)對(duì)象傳播,從里到外,直至它被處理(父級(jí)對(duì)象所有同類(lèi)事件都將被激活),或者它到達(dá)了對(duì)象層次的最頂層,即document對(duì)象(有些瀏覽器是window)。所以有些時(shí)候需要阻止冒泡。

工具原料:編輯器、瀏覽器

方式一:event.stopPropagation();

$("#div1").mousedown(function(event){

event.stopPropagation();

});

方式二:return false;

$("#div1").mousedown(function(event){

return?false;

});

但是這兩種方式是有區(qū)別的。return false 不僅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 則只阻止事件往上冒泡,不阻止事件本身。

網(wǎng)站題目:jquery事件冒泡,jquery事件冒泡是什么
當(dāng)前地址:http://chinadenli.net/article17/dseecdj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站動(dòng)態(tài)網(wǎng)站網(wǎng)站設(shè)計(jì)全網(wǎng)營(yíng)銷(xiāo)推廣服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)