日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

js中的preventDefault与stopPropagation详解

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中的preventDefault与stopPropagation详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?preventDefault:?

  比如<a href="http://www.baidu.com">百度</a>,這是html中最基礎的東西,起的作用就是點擊百度鏈接到http://www.baidu.com,這是屬于<a>標簽的默認行為;preventDefault方法就是可以阻止它的默認行為的發生而發生其他的事情;

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>JS阻止鏈接跳轉</title>
 6 <script type="text/javascript"> 
 7 function stopDefault( e ) { 
 8 if ( e && e.preventDefault ) 
 9    e.preventDefault(); 
10     else 
11    window.event.returnValue = false; 
12 
13     return false; 
14 } 
15 </script> 
16 </head>
17 <body>
18 <a href="http://www.baidu.com" id="testLink">百度</a> 
19 <script type="text/javascript"> 
20 var test = document.getElementById('testLink'); 
21 test.onclick = function(e) { 
22    alert('我的鏈接地址是:' + this.href + ', 但是我不會跳轉。'); 
23    stopDefault(e); 
24 } 
25 </script>
26 </body>
27 </html>

此時點擊百度鏈接,不會打開http://www.baidu.com,而只是彈出一個alert對話框

2.?stopPropagation :

  起到阻止js事件冒泡的作用;

  2.1 講stopPropagation方法之前必需先給大家講解一下js的事件代理:?

  (1) 事件代理用到了兩個在JavaSciprt事件中常被忽略的特性:事件冒泡以及目標元素

  事件冒泡: 當一個元素上的事件被觸發的時候,比如說鼠標點擊了一個按鈕,同樣的事件將會在那個元素的所有祖先元素中被觸發。這一過程被稱為事件冒泡;這個事件從原始元素開始一直冒泡到DOM樹的最上層.

  目標元素:?對任何一個事件來說,其目標元素都是原始元素,在我們的這個例子中也就是按鈕。目標元素它在我們的事件對象中以屬性的形式出現。使用事件代理的話我們可以把事件處理器添加到一個元素上,等待事件從它的子級元素里冒泡上來,并且可以很方便地判斷出這個事件是從哪個元素開始的。

  下面看一段代碼:

<!DOCTYPE html>
<HTML XMLns="http://www.w3.org/1999/xHTML" lang="gb2312">
<head><title> 阻止JS事件冒泡傳遞(cancelBubble 、stopPropagation)</title><meta name="keywords" content="JS,事件冒泡,cancelBubble,stopPropagation" /><script>function doSomething (obj,evt) {alert(obj.id);var e=(evt)?evt:window.event;if (window.event) {e.cancelBubble=true;// ie下阻止冒泡
            } else {//e.preventDefault();
                e.stopPropagation();// 其它瀏覽器下阻止冒泡
            }}</script>
</head>
<body><div id="parent1" onclick="alert(this.id)" style="width:250px;background-color:yellow"><p>This is parent1 div.</p><div id="child1" onclick="alert(this.id)" style="width:200px;background-color:orange"><p>This is child1.</p></div><p>This is parent1 div.</p></div><br /><div id="parent2" onclick="alert(this.id)" style="width:250px;background-color:cyan;"><p>This is parent2 div.</p><div id="child2" onclick="doSomething(this,event);" style="width:200px;background-color:lightblue;"><p>This is child2. Will bubble.</p></div><p>This is parent2 div.</p></div>
</body>
</HTML> 

?

參考:http://www.jb51.net/article/46379.htm

  

?

轉載于:https://www.cnblogs.com/max-tlp/p/8257688.html

總結

以上是生活随笔為你收集整理的js中的preventDefault与stopPropagation详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。