JS中点击事件冒泡解析

Posted 莫道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中点击事件冒泡解析相关的知识,希望对你有一定的参考价值。

关于javascript中的点击事件冒泡的问题,很多初学者都处理不好。

什么是点击事件冒泡?

例:

今天我去小明家找他玩。正好小明、小明的爸爸、小明的爷爷在客厅一起看电视。

我对小明说:”咱们出去玩吧“。

小明十分乐意的回答到:”好啊“。

小明的爸爸听到后,说到:”把作业写完后在出去玩“。

小明的爷爷也发话了:”预报有雷阵雨,就别出去玩了“。

我本来只是询问一下小明的意见,结果他爸比和爷爷对我说的话做出的反应影响到了小明接下来的行为。

这次之后,我和小明私下约定好。以后去找他玩的,都会去他房间里讲话,避免他家人听到。

这就叫事件阻止行为,只有天知地知你知我知,避免其他人造成不必要的影响。

 

废话说了那么多,不知道大家明白了没有。直接上代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>点击事件冒泡处理</title>
    <script type="text/javascript">
        var fun1 = function (e) {
            alert("我是父点击事件");
        }
        var fun2 = function (e) {
            e.stopPropagation();//阻止点击事件向上冒泡
            alert("我是子点击事件");
        }
    </script>
</head>
<body>
    <div onclick="fun1(event)" style="height:100px;background-color:black;color:white;text-align:center;border:1px solid red">
        父节点
        <div onclick="fun2(event)" style="margin-top:20px;border:1px solid red;height:30px">
            子节点
        </div>
    </div>
</body>
</html>

子节点的点击事件会上父一级传递的,就像上述代码中说表明的,在点击事件触发fun2的时候,接下来也会触发fun1。在大部分的逻辑中,我们不是很希望这样。在就需要在点击子节点的时候,中止父节点接下来的行为。

 

再补充一点比较特殊的点击事件:

如果要取消某些DOM元素单击后的缺省处理函数,比如转到其它页面或是提交表单,为了取消这些缺省实际处理,可以调用e.preventDefault()

 

备注:这里只是对一般情况的点击事件冒泡做了说明。

 

以上是关于JS中点击事件冒泡解析的主要内容,如果未能解决你的问题,请参考以下文章

js事件冒泡与捕捉解析

事件捕获与事件冒泡

js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件

js阻止浏览器元素的默认事件与js阻止事件冒泡阻止事件流

JS之捕获冒泡和事件委托

JS中的事件(对象,冒泡,委托,绑定)