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(); 的效果一样。

最后修改:2013 年 07 月 10 日
如果觉得我的文章对你有用,请随意赞赏