關於js中的冒泡和捕獲

js中的冒泡和捕獲其實都是事件流的不同表現,這兩者的產生是因爲某兩個大公司完全不同的事件流概念產生的。(事件流:是指頁面接受事件的順序)。

舉個簡單的例子:

			<div id="div">
				<p id="p">
					<input type="button" value="1"  id="in"/>
				</p>
			</div>
		<script type="text/javascript">
			var inp = document.getElementById("in");
			var myp = document.getElementById("p");
			var d = document.getElementById("div");
			
			inp.οnclick=function(){
				alert(1);
			}
			
			myp.οnclick=function(){
				alert(2);
			}
			d.οnclick=function(){
				alert(3);
			}

可以看到div裏面有一個p標籤,p標籤裏面又有一個input標籤,這是一個典型的嵌套,並且每一層都設置了點擊事件,這種情況下就會有冒泡(dom0級事件不支持捕獲)。

當我們點擊最裏面的input標籤的時候,事件的執行順序是從內到外,即先執行input標籤,在執行p標籤,最後執行div標籤。這就是所謂的冒泡。


捕獲的話其實就是事件執行順序的方向相反,是從外到內依次執行的、。so這就是冒泡和捕獲,有的情況下我們會遇到這種情況,這時候就要靈活的設置事件來達到我們需要的效果。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章