jQuery中阻止冒泡事件的方法介紹
一、冒泡事件簡(jiǎn)介
當(dāng)我們點(diǎn)擊一個(gè)控件的時(shí)候,如果包括這個(gè)控件的父控件也有click事件,則會(huì)繼續(xù)執(zhí)行。
比如:div下的a都有click事件,點(diǎn)擊a的時(shí)候,會(huì)alert出現(xiàn)2次。這個(gè)現(xiàn)象叫做冒泡事件。
這個(gè)事件從原始元素開(kāi)始一直冒泡到DOM樹(shù)的最上層。
目標(biāo)元素: 任何一個(gè)事件的目標(biāo)元素都是最開(kāi)始的那個(gè)元素,在我們的這個(gè)例子中也就是按鈕,
并且它在我們的元素對(duì)象中以屬性的形式出現(xiàn)。使用事件代理的話我們可以把事 件處理器添加到一個(gè)元素上,
等待一個(gè)事件從它的子級(jí)元素里冒泡上來(lái),并且可以很方便地得知這個(gè)事件是從哪個(gè)元素開(kāi)始。
注意:
blur、focus、load和unload不能像其它事件一樣冒泡。事實(shí)上blur和focus可以用事件捕獲而非事件冒泡的方法獲得(在IE之外的其它瀏覽器中)。
二、阻止jQuery事件冒泡
jQuery對(duì)DOM的事件觸發(fā)具有冒泡特性。有時(shí)利用這一特性可以減少重復(fù)代碼,但有時(shí)候我們又不希望事件冒泡。這個(gè)時(shí)候就要阻止 jQuery.Event冒泡。
在jQuery.Event的文檔中的開(kāi)頭得知,jQuery.Event對(duì)象是符合W3C標(biāo)準(zhǔn)的一個(gè)事件對(duì)象,同時(shí)jQuery.Event免去了檢查兼容IE的步驟。
jQuery.Event提供了一個(gè)非常簡(jiǎn)單的方法來(lái)阻止事件冒泡:event.stopPropagation();
$("p").click(function(event){
event.stopPropagation();
// do something
})
但是這個(gè)方法對(duì)使用live綁定的事件沒(méi)有作用,需要一個(gè)更簡(jiǎn)單的方法阻止事件冒泡:return false;
$(this).after("Another paragraph!");
return false; });
兼容多個(gè)瀏覽器的終止冒泡函數(shù):
function stopDefault(e) {
//阻止默認(rèn)瀏覽器動(dòng)作(W3C)
if (e && e.preventDefault)
e.preventDefault();
//IE中阻止函數(shù)器默認(rèn)動(dòng)作的方式
else
window.event.returnValue = false;
return false;
}
三、使用event.tatget屬性 明確事件對(duì)象
事件處理程序中的變量event保存著事件對(duì)象。而event.tatget屬性保存著發(fā)生事件的目標(biāo)元素。這個(gè)屬性是DOM API中規(guī)定的,但是沒(méi)有被所有瀏覽器實(shí)現(xiàn)。jQuery對(duì)這個(gè)事件對(duì)象進(jìn)行了必要的擴(kuò)展,從而在任何瀏覽器中都能夠使用這個(gè)屬性。通過(guò).target,可以確定DOM中首先接收到事件的元素。而且,我們知道this引用的是處理事件的DOM元素。
使用event.tatget屬性 明確事件對(duì)象
阻止事件冒泡的代碼如下:
$(document).ready(function() {
$('switcher').click(function(event){
if(event.target == this)
{
$('switcher .button').toggleClass('hidden');
}
};)
});
- jquery取消事件冒泡的三種方法(推薦)
- jQuery中on綁定事件后引發(fā)的事件冒泡問(wèn)題如何解決
- 深入理解jQuery之防止冒泡事件
- 深入理解jQuery中的事件冒泡
- 理解jquery事件冒泡
- jquery關(guān)于事件冒泡和事件委托的技巧及阻止與允許事件冒泡的三種實(shí)現(xiàn)方法
- jQuery 1.9.1源碼分析系列(十)事件系統(tǒng)之主動(dòng)觸發(fā)事件和模擬冒泡處理
- JavaScript和JQuery的鼠標(biāo)mouse事件冒泡處理
- JQuery中DOM事件冒泡實(shí)例分析
- jQuery中事件對(duì)象e的事件冒泡用法示例介紹
- js阻止冒泡及jquery阻止事件冒泡示例介紹
- 利用JQuery阻止事件冒泡
相關(guān)文章
jQuery網(wǎng)頁(yè)定位導(dǎo)航特效實(shí)現(xiàn)方法
這篇文章主要介紹了jQuery網(wǎng)頁(yè)定位導(dǎo)航特效實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了jQuery網(wǎng)頁(yè)定位導(dǎo)航的功能描述、原理與核心實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-12-12
jquery對(duì)所有input type=text的控件賦值實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jquery對(duì)所有input type=text的控件賦值實(shí)現(xiàn)方法。小編覺(jué)的挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
js 實(shí)現(xiàn)一些跨瀏覽器的事件方法詳解及實(shí)例
這篇文章主要介紹了js 實(shí)現(xiàn)一些跨瀏覽器的事件方法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-10-10
WEB前端開(kāi)發(fā)都應(yīng)知道的jquery小技巧及jquery三個(gè)簡(jiǎn)寫(xiě)
一個(gè)簡(jiǎn)單技巧的集合,幫你提升 jQuery 技能,下面腳本之家小編給大家收集整理了web前端開(kāi)發(fā)都應(yīng)知道的jquery小技巧,對(duì)jquery小技巧感興趣的朋友一起學(xué)習(xí)吧2015-11-11
實(shí)例解析jQuery中proxy()函數(shù)的用法
proxy()主要用于在同樣的上下文語(yǔ)境中指向另一個(gè)對(duì)象,下面我們就以實(shí)例解析jQuery中proxy()函數(shù)的用法,需要的朋友可以參考下2016-05-05
jquery限定文本框只能輸入數(shù)字(整數(shù)和小數(shù))
這篇文章主要介紹了jquery限定文本框只能輸入數(shù)字,包括整數(shù)和小數(shù),感興趣的小伙伴們可以參考一下2016-01-01
EasyUI 中combotree 默認(rèn)不能選擇父節(jié)點(diǎn)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇EasyUI 中combotree 默認(rèn)不能選擇父節(jié)點(diǎn)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
jQuery實(shí)現(xiàn)常見(jiàn)的隱藏與展示列表效果示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)常見(jiàn)的隱藏與展示列表效果,結(jié)合完整實(shí)例形式分析了jQuery事件響應(yīng)及針對(duì)頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06

