e.preventDefault() e.stopPropagation() return false 三者的區別

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style type="text/css" media="screen">
 7         *{
 8             margin: 0;
 9             padding: 0;
10         }
11         html,body{
12             width: 100%;
13             height: 100%;
14         }
15         
16         .flex{
17             display: flex;
18             justify-content: center;
19             align-items: center;
20         }
21         .box{
22             width: 800px;
23             height: 500px;
24             border: 2px solid #ccc;
25         }
26         .box>div{
27             width: 80%;
28             height: 80%;
29             border: 1px solid #ccc;
30         }
31     </style>
32 </head>
33 <body class="flex">
34     <div class="box flex">
35         <div class="flex">
36             <a href="http:www.baidu.com">百度</a>
37         </div>
38     </div>
39     <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
40     <script type="text/javascript">
41         $(function(){
42             $(".box").click(function(){
43                 alert(111)
44             })
45             $(".box>div").click(function(){
46                 alert(222)
47             })
48             $(".box>div>a").click(function(e){
49                 // e.stopPropagation()
50                 e.preventDefault()
51                 alert(333)
52                 // return false;
53             })
54         })
55     </script>
56 </body>
57 </html>

這是一個很普通的例子,可是包含了不少知識,下面是別人的一個總結:javascript

 

寫的挺好的,本身也能夠再總結一下:css

e.preventDefault();是阻止事件的默認行爲,好比表單的提交,以前使用到的也就是阻止表單的提交,今天又學到,a標籤的連接跳轉也是一個事件的默認行爲,能夠阻止掉html

e.stopPropagation();是阻止事件冒泡,可是不會阻止事件的默認行爲,點擊以後不會有冒泡,可是會有跳轉java

return false;同時阻止事件冒泡與事件的默認行爲,很適用。jquery

 

忽然想起來以前在面試過程當中,一個面試官問個人一個問題:有沒有適用過冒泡來實現一些需求,當時很懵逼,通常的冒泡都是直接靜止掉了,還能利用起來,很神奇,要學的東西還有不少啊面試

相關文章
相關標籤/搜索