</
script
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
id
=
"divOne"
onclick
=
"alert('我是最外层');"
>
<
div
id
=
"divTwo"
onclick
=
"alert('我是中间层!')"
>
<
a
id
=
"hr_three"
href
=
"http://www.baidu.com"
mce_href
=
"http://www.baidu.com"
onclick="alert('我是最里层!')"
>
点击我
</
a
>
</
div
>
</
div
>
</
form
>
</
body
>
</
html
>
比如上面这个页面,
分为三层:divOne是第外层,divTwo中间层,hr_three是最里层;
他们都有各自的click事件,最里层a标签还有href属性。
运行页面,点击“点击我”,会依次弹出:我是最里层—->我是中间层—->我是最外层
—->然后再链接到百度.
这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作。
事件冒泡过程(以标签ID表示):hr_three—-> divTwo—-> divOne 。从最里层冒泡到最外层。
如何来阻止?
1.event.stopPropagation();
<script type="text/javascript">
$(function() {
$("#hr_three").click(function(event) {
event.stopPropagation();
</script>
再点击“点击我”,会弹出:我是最里层,然后链接到百度
2.return false;
如果头部加入的是以下代码
<script type="text/javascript"> $(function() { $("#hr_three").click(function(event) { return false; }); }); <script>
再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面
由此可以看出:
1.event.stopPropagation();
事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转)
2.return false;
事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转)
还有一种有冒泡有关的:
3.event.preventDefault();
如果把它放在头部A标签的click事件中,点击“点击我”。
会发现它依次弹出:我是最里层—->我是中间层—->我是最外层,但最后却没有跳转到百度
它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)
转载地址:http://m.blog.csdn.net/article/details?id=51039179
冒泡机制
气泡从水底开始往上升,由深到浅,升到最上面。在上升的过程中,气泡会经过不同深度层次的水。相对应地:这个气泡就相当于我们这里的事件,而水则相当于我们的整个dom树;事件从dom 树的底层,层层往上传递,直至传递到dom的根节点。当子元素与父元素有相同的事件时,当子元素被触发时父元素也会被触发冒泡机制
在不同浏览器中,冒泡的程度不同:
IE 6.0:
div -> body...
最近刚学习完js基础,今天发现对js的默认事件阻止以及阻止事件的冒泡有点忘记,于是写这篇文章算是做一个总结,也是加深一下印象。
1.阻止默认事件
在html中有很多自带默认事件的元素,很典型的例子:a标签,如果给a标签绑定点击事件,触发后页面会有一个刷新,是a链接默认的跳转事件,阻止这个有很多方法
给a标签中href属性添加
<a href="javascript:;">链接</...
上面的代码当中一个div元素当中有一个p子元素,如果两个元素都有一个click的处理函数,那么我们怎么才能知道哪一个函数会首先被触发呢?
为了解决这个问题微软和网景提出了两种几乎完全相反的概念。
事件冒泡
微软提出了名为事件
<div @click="divEven" style="border:1px #188eee solid;">
<a
href="www.baidu.com" @click="aEven">百度链接</a>
</div>
<!--stop的使用:阻止
事件冒泡的发生-->
以前一直没有想过冒泡,不过今天居然遇到了。
情形是这样的,在我的<a>标签内部只是一个<input type="button">按钮。那么这样我的超链接就失效了。
原代码是这样的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<he
何为事件冒泡:
HTML DOM模型是个树形结构,元素之间有相互嵌套的关系,比如Click Me 中div是父元素而a是子元素。如果父子元素都绑定了同一个事件比如onClick,当内层的子元素的事件被触发时,该事件会被传递到父元素中。
jQuery中如何阻止事件冒泡:
每个jQuery事件都有一个默认的参数对象,这就是event,通过执行该对象的event.stopPropagati
现在有一个div,这个div里面有一个a标签,div和a都是有点击事件的,但是我想要做到点击a标签的时候就只触发里面a标签的点击事件,不想执行外层div的点击事件。
使用JQuery可以简单地实现,只需要加入如下代码:
event.stopPropagation();
阻止事件冒泡。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
冒泡和阻止
冒泡</title>
<script src="jque