jQuery之防止冒泡事件,冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。
下面是html代码部分:
- <body>
- <div id="content">
- 外层div元素
- <span>内层span元素</span>
- 外层div元素
- </div>
- <div id="msg"></div>
- </body>
对应的jQuery代码如下:
- <script type="text/javascript">
- $(function(){
- // 为span元素绑定click事件
- $('span').bind("click",function(){
- var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";//获取html信息
- $('#msg').html(txt);// 设置html信息
- });
- // 为div元素绑定click事件
- $('#content').bind("click",function(){
- var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
- $('#msg').html(txt);
- });
- // 为body元素绑定click事件
- $("body").bind("click",function(){
- var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
- $('#msg').html(txt);
- });
- })
- </script>
当点击span时,会触发div与body 的点击事件。点击div时会触发body的点击事件。
如何防止这种冒泡事件发生呢?
修改如下:
- <script type="text/javascript">
- $(function(){
- // 为span元素绑定click事件
- $('span').bind("click",function(event){
- var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";
- $('#msg').html(txt);
- event.stopPropagation(); // 阻止事件冒泡
- });
- // 为div元素绑定click事件
- $('#content').bind("click",function(event){
- var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
- $('#msg').html(txt);
- event.stopPropagation(); // 阻止事件冒泡
- });
- // 为body元素绑定click事件
- $("body").bind("click",function(){
- var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
- $('#msg').html(txt);
- });
- })
- </script>
event.stopPropagation(); // 阻止事件冒泡
有时候点击提交按钮会有一些默认事件。比如跳转到别的界面。但是如果没有通过验证的话,就不应该跳转。这时候可以通过设置event.preventDefault(); //阻止默认行为 ( 表单提交 )。
下面是案例:
- <script type="text/javascript">
- $(function(){
- $("#sub").bind("click",function(event){
- var username = $("#username").val(); //获取元素的值,val() 方法返回或设置被选元素的值。
- if(username==""){ //判断值是否为空
- $("#msg").html("<p>文本框的值不能为空.</p>"); //提示信息
- event.preventDefault(); //阻止默认行为 ( 表单提交 )
- }
- })
- })
- </script>
html部分:
- <body>
- <form action="test.html">
- 用户名:<input type="text" id="username" />
- <br/>
- <input type="submit" value="提交" id="sub"/>
- </form>
- <div id="msg"></div>
- </body>
还有一种防止默认行为的方法就是return false。效果一样。
代码如下:
- <script type="text/javascript">
- $(function(){
- $("#sub").bind("click",function(event){
- var username = $("#username").val(); //获取元素的值
- if(username==""){ //判断值是否为空
- $("#msg").html("<p>文本框的值不能为空.</p>"); //提示信息
- return false;
- }
- })
- })
- </script>
同理,上面的冒泡事件也可以通过return false来处理。
- <script type="text/javascript">
- $(function(){
- // 为span元素绑定click事件
- $('span').bind("click",function(event){
- var txt = $('#msg').html() + "<p>内层span元素被点击.<p/>";
- $('#msg').html(txt);
- return false;
- });
- // 为div元素绑定click事件
- $('#content').bind("click",function(event){
- var txt = $('#msg').html() + "<p>外层div元素被点击.<p/>";
- $('#msg').html(txt);
- return false;
- });
- // 为body元素绑定click事件
- $("body").bind("click",function(){
- var txt = $('#msg').html() + "<p>body元素被点击.<p/>";
- $('#msg').html(txt);
- });
- })
- </script>
jQuery之防止冒泡事件,冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。的更多相关文章
- jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除
jquery 添加与删除的规律 当要添加时候要定位到自己的父元素 当要删除时候 通过事件函数传入的this找到自己的父元素进行删除
- 子组件通过 $emit 触发父组件的自定义事件
子组件: <template> <div class="train-city"> <h3>父组件传给子组件的toCity:{{sendData} ...
- 子组件通过$emit触发父组件的事件时,参数的传递
子组件.vue <template> <div> <el-table :data="comSchemaData" highlight-current- ...
- JQuery阻止事件冒泡
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点 ...
- JQuery阻止事件冒泡---阻止后续代码执行
(1)什么是事件起泡 首先你要明白一点,当一个事件发生的时候,该事件总是有一个事件源,即引发这个事件的对象,一个事件不能凭空产生,这就是事件的发生. 当事件发生后,这个事件就要开始传播.为什么要传播呢 ...
- jQuery阻止事件冒泡的例子
下面给给各位朋友稍加整理了一jquery中阻止事件冒泡的一些例子,我们知道JQuery 提供了两种方式来阻止事件冒泡,但我们简单的利用它来做一些应用可能不深入或不理解,下面整理了更详细的方法,有兴趣的 ...
- Jquery阻断事件冒泡(转载)
JQuery阻止事件冒泡 冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个d ...
- 你知道JQuery中的事件冒泡吗,他是怎么执行的,如何来停止冒泡事件?
事件冒泡 首先需要知道什么是事件冒泡? 事件冒泡是从里面的往外面开始触发的,就是点击子节点,会向上触发父节点,祖先节点的点击事件 demo: <html xmlns="http://w ...
- 阻止事件冒泡js jquery
jQuery之防止冒泡事件 冒泡事件就是点击子节点,会向上触发父节点.祖先节点的点击事件. 以下是html代码部分: <body> <div id="content&quo ...
随机推荐
- codeforces D. Painting The Wall
http://codeforces.com/problemset/problem/399/D 题意:给出n和m,表示在一个n*n的平面上有n*n个方格,其中有m块已经涂色.现在随机选中一块进行涂色(如 ...
- ASP.NET服务器推送及前后台实时交互
一:项目需求 页面需要做一个上传Excel功能,并处理Excel中的数据到数据库中 这是一个较为漫长的过程 这时我需要在页面上显示处理进度的提示,给用户一个良好的体验 比如给用户提示“正在上传文档”, ...
- Linux目录树
Linux目录树(directory tree) 分层结构(不同于数据库文件系统),单个文件/目录的最大长度为255个字符,完整路径为4096个字符 特殊的文件系统 文件系统 挂载点 说明 Root ...
- wpa_cli和wpa_supplicant使用,配置无线AP名和密码,静态ip地址
配置静态ip方法分享:通过串口命令行输入如下命令: 1. 添加无线网络接入点(AP) 及其 密码:# wpa_cli -p /data/misc/wpa_supplicantwpa_cli v0.5. ...
- 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...
- Delphi 为TClientdataset定义结果集,并增加记录
Delphi 为TClientdataset定义结果集,并增加记录 procedure addDefsFieldsForCDS(aDataSet: TClientDataSet);begin aDa ...
- 《A First Course in Probability》-chaper8-极限定理-各类不等式
詹森不等式: 证明:
- 武汉Uber优步司机奖励政策(1月18日~1月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 病毒侵袭 - HDU 2896(AC自动机)
分析:有点需要注意的,输入的字符是所有可见的ASCII码,刚开始没看清一直以为是小写字母.............注意到这点后这题就是裸的自动机了. 代码如下: ================= ...
- XCODE 代码行统计
find . -name "*.m" -or -name "*.h" -or -name "*.c" |xargs grep -v &quo ...