亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JQuery中DOM事件冒泡實例分析

2019-11-20 12:16:14
字體:
來源:轉載
供稿:網友

本文實例分析了JQuery中DOM事件冒泡。分享給大家供大家參考。具體分析如下:

什么是冒泡

在頁面上可以有多個事件,也可以多個元素響應同一個事件。假設網頁上有兩個元素,其中一個元素嵌套在另一個元素里,并且都被綁定了click事件,同時body元素上也綁定了click事件。

<div id="content">  外層div元素  <span>內層span元素</span>  外層div元素</div>
<script type="text/javascript">$(function(){  // 為span元素綁定click事件  $('span').bind("click",function(){    var txt = $('#msg').html() + "<p>內層span元素被點擊.<p/>";    $('#msg').html(txt);  });  // 為div元素綁定click事件  $('#content').bind("click",function(){   var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>";    $('#msg').html(txt);  });  // 為body元素綁定click事件  $("body").bind("click",function(){    var txt = $('#msg').html() + "<p>body元素被點擊.<p/>";    $('#msg').html(txt);  });})</script>

當單擊內部span元素,即觸發span元素的click事件時,會輸出3條記錄。只單擊內部span元素,就會觸發外部div元素和body元素上綁定的click事件。這是由事件冒泡引起的。在單擊span元素的同時,也單擊了包含span元素的元素div和包含div元素的元素body,并且每一個元素都會按照特定的順序響應click事件。

元素的click事件會按照以下順序“冒泡”。

1. <span>
2. <div>
3. <body>

之所以稱為冒泡,是因為事件會按照DOM的層次結構像水泡一樣不斷向上直至頂端。

事件冒泡引發的問題

事件冒泡可能會引起預料之外的效果。上例中,本來只想觸發<span>元素的click事件,然而<div>元素和<body>元素的click事件也同時被觸發了。因此,有必要對事件的作用范圍進行限制。當單擊<span>元素時,只觸發<span>元素的click事件,而不觸發<div>元素和<body>元素的click事件:當單擊<div>元素時,只觸發<div>元素的click事件,而不觸發<body>元素的click事件。

事件對象

由于IE-DOM和標準DOM實現事件對象的方法各不相同,導致在不同瀏覽器中獲取事件對象變得比較困難。針對這個問題,JQuery進行了必要的擴展和封裝,從而使得在任何瀏覽器中都能很輕松地獲取事件對象以及事件對象的一些屬性。

在程序中使用事件對象非常簡單,只需要為函數添加一個參數,jQuery代碼如下:

$("element").bind("click",function(event){   //event : 事件對象   //... });

這樣,當單擊“element”元素時,事件對象就被創建了。這個事件對象只有事件處理函數才能訪問到。事件處理函數執行完畢后,事件對象就被銷毀。

停止事件冒泡

停止事件冒泡可以阻止事件中其他對象的事件處理函數被執行。在JQuery中提供了stopPropagation()方法來停止事件冒泡。

$(function(){   // 為span元素綁定click事件  $('span').bind("click",function(event){    var txt = $('#msg').html() + "內層span元素被點擊";    $('#msg').html(txt);    event.stopPropagation(); // 阻止事件冒泡  });})

當單擊<span>元素時,只會觸發<span>元素上的click事件,而不會觸發<div>元素和<body>元素的click事件??梢杂猛瑯拥姆椒ń鉀Q<div>元素上的冒泡問題。

$('#content').bind("click",function(event){  var txt = $('#msg').html() + "<p>外層div元素被點擊.<p/>";  $('#msg').html(txt);  event.stopPropagation(); // 阻止事件冒泡 });

這樣,當單擊<span>元素或者<div>元素時,就只會輸出相應的內容,而不會輸出其他的內容。

阻止默認行為

網頁中的元素有自己默認的行為,例如,單擊超鏈接后會跳轉、單擊“提交”按鈕后表單會提交,有時需要阻止元素的默認行為。

在JQuery中,提供了preventDefault()方法來阻止元素的默認行為。

舉一個例子,在項目中,經常需要驗證表單,在單擊“提交”按鈕時,驗證表單內容,例如某元素是否是必填字段,某元素長度是否夠6位等,當表單不符合提交條件時,要阻止表單的提交(默認行為)。

<form action="test.html">用戶名:<input type="text" id="username" /><br/><input type="submit" value="提交" id="sub"/></form>
$(function(){ $("#sub").bind("click",function(event){   var username = $("#username").val(); //獲取元素的值   if(username==""){ //判斷值是否為空      $("#msg").html("<p>文本框的值不能為空.</p>"); //提示信息      event.preventDefault(); //阻止默認行為 ( 表單提交 )     } })})

當用戶名為空時,單擊“提交”按鈕,會出現提示,并且表單不能提交。只有在用戶名里輸入內容后,才能提交表單??梢姡琾reventDefault()方法能阻止表單的提交行為。

如果想同時對事件對象停止冒泡和默認行為,可以在事件處理函數中返同false。這是對在事件對象上同時調用stopPrapagation()方法和preventDefault()方法的一種簡寫方式。

在表單的例子中,可以把 event.preventDefault(); 改寫為: return false;

也可以把事件冒泡例子中的 event.stopPropaqation(); 改寫為: return false;

事件捕獲

事件捕獲和事件冒泡是剛好相反的兩個過程,事件捕獲是從最頂端往下開始觸發。還是冒泡事件的例子,其中元素的click事件會按照以下順序捕獲。

1. <body>
2. <div>
3. <span>

很顯然,事件捕獲是從最外層元素開始,然后再到最里層元素。因此綁定的click事件,首先會傳遞給<body>元素,然后傳遞給<div>元素,最后才傳遞給<span>元素。

遺憾的是,并非所有主流瀏覽器都支持事件捕獲,并且這個缺陷無法通過JavaScript來修復。JQuery不交持事件捕獲,如果讀者需要使用事件捕獲,請直接使用原生的JavaScript。

希望本文所述對大家的jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
911国产网站尤物在线观看| 亚洲激情视频在线播放| 97精品在线观看| 久久99国产精品自在自在app| 精品国偷自产在线视频99| 狠狠综合久久av一区二区小说| 国产精品免费在线免费| 日韩黄色高清视频| 亚洲高清久久久久久| 全球成人中文在线| 日韩精品中文字幕在线观看| 国产精品aaa| 97视频在线免费观看| 欧美最猛性xxxxx亚洲精品| 欧美国产日韩免费| 国产日韩欧美中文| 成人免费视频xnxx.com| 日韩有码视频在线| 欧美激情奇米色| 日本a级片电影一区二区| 欧美www视频在线观看| 亚洲精品第一国产综合精品| 成人伊人精品色xxxx视频| 久久久国产一区| 性视频1819p久久| 国产精品男人爽免费视频1| 精品久久久久久久久久久| 国产精品久久久av| 欧美日韩另类视频| 国产综合香蕉五月婷在线| 最近2019年中文视频免费在线观看| 色哟哟网站入口亚洲精品| 97不卡在线视频| 欧洲亚洲在线视频| 亚洲女同精品视频| 九九热精品在线| 欧美午夜性色大片在线观看| 国产精品中文在线| 亚洲最新av在线网站| 欧美日韩国产中文字幕| 欧美成人在线免费| 欧美性受xxxx白人性爽| 国产精品一区专区欧美日韩| 久久精品国产91精品亚洲| 久久久av网站| 2025国产精品视频| 亚洲一级免费视频| 成人性生交大片免费看视频直播| 亚洲а∨天堂久久精品喷水| 91夜夜揉人人捏人人添红杏| 蜜臀久久99精品久久久无需会员| 日韩69视频在线观看| 欧美国产精品人人做人人爱| 国产xxx69麻豆国语对白| 亚洲国产欧美一区二区丝袜黑人| 有码中文亚洲精品| 欧美午夜激情小视频| 亚洲欧洲国产精品| 国产欧美日韩中文字幕在线| 精品久久久久久中文字幕一区奶水| 国产成人av在线| 红桃视频成人在线观看| 久久久久久久成人| 在线看日韩欧美| 国产成人久久精品| 国产精品视频免费观看www| 青草青草久热精品视频在线网站| 日韩精品中文字幕久久臀| 深夜福利日韩在线看| 国产suv精品一区二区| 国产美女精品免费电影| 日韩欧美成人网| 国产精品久久一区主播| 亚洲一区二区三区在线视频| 久久久免费电影| www.99久久热国产日韩欧美.com| 成人欧美在线观看| 国产精品永久免费观看| xvideos成人免费中文版| 国产精品激情自拍| 欧美日韩xxxxx| 一区二区在线视频播放| 精品免费在线观看| 26uuu另类亚洲欧美日本一| 亚洲精品网址在线观看| 欧美www视频在线观看| 亚洲欧美另类国产| 亚洲综合日韩在线| 欧美精品做受xxx性少妇| 久久久亚洲天堂| 国产精品黄视频| 91成人在线观看国产| 日韩最新中文字幕电影免费看| 久久精品一偷一偷国产| 亚洲一区av在线播放| 精品久久在线播放| 亚洲国产欧美一区二区丝袜黑人| 国产丝袜一区二区三区| 日韩激情片免费| 日韩久久免费电影| 国产在线久久久| 一区二区三区视频观看| 一区二区三区亚洲| 2018日韩中文字幕| 国产999视频| 欧美性猛交xxxx黑人猛交| 亚洲第一色在线| 韩国19禁主播vip福利视频| 91av免费观看91av精品在线| 欧美大片在线免费观看| 色777狠狠综合秋免鲁丝| 欧美精品电影免费在线观看| 久久久99久久精品女同性| 久久影院在线观看| 欧美性生活大片免费观看网址| 26uuu另类亚洲欧美日本老年| 亚洲精品自拍视频| 欧美国产精品va在线观看| 午夜精品久久久久久99热软件| 97在线看免费观看视频在线观看| 国产精品成人国产乱一区| 国产免费一区二区三区在线观看| 成人福利在线视频| 91亚洲精品视频| 欧美日韩午夜激情| 日韩免费av片在线观看| 97超碰国产精品女人人人爽| 久久久精品一区二区三区| 亚洲qvod图片区电影| 国产美女扒开尿口久久久| 欧美丰满少妇xxxx| 久久精品久久久久电影| 91久久久在线| 久久久久久成人精品| 亚洲国产精品va在线观看黑人| 国产午夜精品久久久| 国产精品成人国产乱一区| 国产日韩欧美电影在线观看| 日韩电影中文 亚洲精品乱码| 亚洲精品短视频| 日韩成人激情视频| 亚洲欧美成人在线| 日本一区二区三区四区视频| 欧美成人免费在线视频| 国内精品美女av在线播放| 国产视频丨精品|在线观看| 久久九九精品99国产精品| 国产中文欧美精品| 亚洲激情自拍图| 91久久久久久| 亚洲成人三级在线| 欧美日韩性生活视频| 国产丝袜精品第一页| 欧美黑人巨大精品一区二区| 亚洲国产一区二区三区四区| 精品高清一区二区三区| 国产精品黄视频| 精品国产一区二区在线| 国产成人免费91av在线| 国产有码一区二区| 综合av色偷偷网| 久久99精品久久久久久噜噜| 国产玖玖精品视频| 欧美日韩一区二区三区在线免费观看|