在jQuery中的自定義事件的冒泡

2024-03-22    分類: 網(wǎng)站建設

昨天的文章牽涉到了jQuery的自定義事件冒泡問題,但只是提到?jīng)]有詳細的說明。在jQuery中,自定義事件是會冒泡的,而且不僅是對普通的DOM元素冒泡,甚至還會擴散到window(defaultView)上。這些機制是jQuery內(nèi)部實現(xiàn)的,和DOM的事件機制沒啥關系。 現(xiàn)在來做這么一個測試<div?class="d1"> <div?class="d2"> <div?class="d3"> div </div> </div> </div> <script?src="jquery.js"></script> <script> $(function(){ //選擇所有標簽外加document和window來綁定上test事件 $("*").add(document).add(window).on("test",function(){ //輸出對象的構(gòu)造器名稱和className console.log(this.constructor.name,this.className||""); }); //對最內(nèi)層的div觸發(fā)test $(".d3").trigger("test"); }); </script>

這家伙厲害吧,我只對最內(nèi)層的DIV執(zhí)行了trigger就觸發(fā)了這么多個事件,這就是自定義事件冒泡。jQuery默認對事件冒泡,只有特殊指定不冒泡時候才不會冒泡。關于這個機制的實現(xiàn)可以看jQuery的代碼(jquery-1.9.1.js 2956行到2973行)。 如果不需要冒泡怎么辦呢?在jQuery的內(nèi)部有這么一個判斷if?(?!onlyHandlers?&&?!special.noBubble?&&?!jQuery.isWindow(?elem?)?)  只有通過這個判斷時才會冒泡,最簡單的方法就是讓onlyHandlers為true。這個操作jQuery有提供方法,所以只要在觸發(fā)事件時使用triggerHandler即可??$(".d3").triggerHandler("test");

本文標題:在jQuery中的自定義事件的冒泡
URL標題:http://bm7419.com/news11/321211.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、全網(wǎng)營銷推廣、網(wǎng)站排名、微信小程序網(wǎng)站制作、服務器托管

廣告

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

成都網(wǎng)站建設公司