JS冒泡也是才知道不久,以前完全不知道这个词。
JS事件冒泡解释:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。
通过一个实例来理解:
<div onclick="alert('3');"> <div onclick="alert('2');"> <a href="http://www.daidaiwa.com" onclick="alert('1');">js冒泡</a> </div> </div>
点击a链接,依次执行alert('1')=>alert('2')=>alert('3')=>a链接的href。
阻止冒泡:event.stopPropagation();
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#a1").click(function (event) { event.stopPropagation(); }); }); </script>
点击a链接,依次执行alert('1')=>a链接的href。
另外一种方法就是:return false;
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#a1").click(function (event) { return false; }); }); </script>
此时,只执行alert('1'),a链接的href也不会执行。
<div id="div3" onclick="alert('3');"> <div id="div2" onclick="alert('2');"> <a id="a1" href="http://www.daidaiwa.com" onclick="alert('1');return false;">js冒泡</a> </div> </div>
在onclick里加return false;会阻止a链接的href,但是alert('1'),alert('2'),alert('3')还会依次执行。这貌似和event.preventDefault(); 的效果一样。