首页 >

Js冒泡事件详解及阻止示例【javascript】

web前端|js教程Js冒泡事件详解及阻止示例【javascript】
冒泡事件,阻止
web前端-js教程
Js冒泡机制是指如果某元素定义了事件A,如click事件,如果触发了事件之后,没有阻止冒泡事件,那么事件将向父级元素传播,触发父类的click函数。
如下例所示:
麻将开源源码,ubuntu命令手册下载,MATLAb如何循环爬虫,php ldap ssl,seo课程网站lzw
 
function ialertdouble(e) {
alert('innerdouble');
stopBubble(e);
}
function ialertthree(e) {
alert('innerthree');
stopBubbleDouble(e);
}
function stopBubble(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡
}
function stopBubbleDouble(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡
evt.preventDefault();//阻止浏览器默认行为,这样链接就不会跳转
}
$(function() {
//方法一
//$('#jquerytest').click(function(event) {
// alert('innerfour');
// event.stopPropagation();
// event.preventDefault();
//});
//方法二
$('#jquerytest').click(function() {
alert('innerfour');
return false;
});
});
without
middle
inner

innerdouble

innerthree

企业门户网站源码,vscode翻译软件,树莓派 cm4 ubuntu,腾讯云和tomcat,sqlite包含几个文件,bootstrap分页插件,前端框架大比拼,iphone可以代理爬虫吗,php node.js,seo框架分析,导航类网站模板,网页gif动态new小图标,帝国cms 模板 教程,vhdl倒计时程序lzw

innerfour

做任务赚钱的网站源码,vscode远程开放,ubuntu新装,怎么新建tomcat,sqlite二进制,dz 3.2 插件 模板修改,小而美web前端框架,爬虫攻击是什么意思,PHP购物车隐藏,福建公司seo排名,网站鼠标经过图片代码,产品展示网页效果,帝国cms模板文件目录lzw
当你点击inner的时候,会依次弹出‘inner’,‘middle’和‘without’。这就是事件冒泡。

从直观上来看,也是这样的,因为最里层的区域是在父级节点中的,点击了子级节点的区域,其实也是点击了父级节点的区域,所以事件会传播起来。

其实,很多的时候,我们并不想事件冒泡,因为这样会同时触发几个事件。

接下来:我们点击innerdouble。就会发现她并没有冒泡,因为她在调用的方法ialertdouble()中调用了stopBubble()方法,方法通过判断浏览器类型(Ie通过cancleBubble() 、firefox通过stopProgation())来阻止冒泡。

但如果是链接的话,我们会发现她也会阻止冒泡,但是会跳转,这就是浏览器的默认行为。需要借助preventDefault()方法来阻止。具体可以查看ialertthree()。

目前主流的都是借助jquery来绑定click事件的,这样的话,就简单多了。

我们可以在点击事件时传入参数event,然后直接

event.stopPropagation();
event.preventDefault(); //没有链接不需要加这个。

这样就可以了。

框架就是好,其实还有更简单的,在事件处理程序中返回false,这是对在事件对象上同时调用stopPropagation()和preventDefault()的一种简写方式。
【详细代码见上面,记得载入jquery.js。】

其实也还可以在每个click事件中加入判断:

 
$('#id').click(function(event){
if(event.target==this){
//do something
}
})

解析:事件处理程序中的变量event保存着事件对象。而event.target属性保存着发生事件的目标元素。这个属性是DOM API中规定的,但是没有被所有浏览器实现 。jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性。通过.target,可以确定DOM中首先接收到事件的元素(即实际被单击的元素)。而且,我们知道this引用的是处理事件的DOM元素,所以可以编写以上代码。

不过推荐使用return false,Jquery绑定事件的话。


Js冒泡事件详解及阻止示例【javascript】
  • JS阻止冒泡事件以及默认事件发生的简单方法
  • JS阻止冒泡事件以及默认事件发生的简单方法 | JS阻止冒泡事件以及默认事件发生的简单方法 ...

    Js冒泡事件详解及阻止示例【javascript】
  • js 冒泡事件与事件监听使用分析【javascript】
  • js 冒泡事件与事件监听使用分析【javascript】 | js 冒泡事件与事件监听使用分析【javascript】 ...

    Js冒泡事件详解及阻止示例【javascript】
  • Js 冒泡事件阻止实现代码【javascript】
  • Js 冒泡事件阻止实现代码【javascript】 | Js 冒泡事件阻止实现代码【javascript】 ...