首页 > 代码库 > 认识事件冒泡
认识事件冒泡
一.事件冒泡就是多个元素同时响应了同一个事件,前提是这些元素都绑定了这一个事件。这只是我的定义,感觉好理解些。
称它为冒泡,是因为事件会按照DOM元素的层次结构依次执行,就像水泡一样不断浮向顶端。所以称之为事件冒泡。
这个图便于理解,我用箭头来代替冒泡:
二.通过demo来认识
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <script type="text/javascript" src="http://www.mamicode.com/Scripts/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function () { $("span").bind("click", function () { var text = $("#msg").html() + "<p>span元素单击事件</p>"; $("#msg").html(text); }); }); $(function () { $("#content").bind("click", function () { var text = $("#msg").html() + "<p>div元素单击事件</p>"; $("#msg").html(text); }); }); $(function () { $("body").bind("click", function () { var text = $("#msg").html() + "<p>body元素单击事件</p>"; $("#msg").html(text); }); }); </script> <title>BubbleEvent</title> </head> <body > <div id="content"> DIV元素 <span>SPAN元素</span> </div> <div id="msg"></div> </body> </html>
依次点击span,div,body会出现效果图:(body的点击事件只作用于当前内容所占区域,而不是整个网页区域)
三.解决事件冒泡
先认识下事件对象,在上面程式中添加一个参数event,点击span元素时,事件对象就会被创建,这个事件对象只有事件函数才能访问,事件函数处理完后
事件对象会销毁。
事件对象具有自己的属性
jquery中stopPropagation()方法可以停止事件冒泡
$(function () { $("span").bind("click", function (event) { var text = $("#msg").html() + "<p>span元素单击事件</p>"; $("#msg").html(text); alert(event.type);//event类型是click event.stopImmediatePropagation(); //停止事件冒泡方法 }); });
此时点击span元素效果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。