JS冒泡与阻止

来源:互联网 发布:横须贺刺绣外套淘宝 编辑:程序博客网 时间:2024/05/16 16:11
什么是JS事件冒泡?:

在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

如:

<div>     <p><a href="#">link</a></p></div>
$(function() {$('div').click(function() {console.log('outer');});$('p').click(function(e) {console.log('inner');});});
点击a标签,会输出inner,再输出之外的outer。


3个方法比较:

$(function() {$('div').click(function() {console.log('outer');});$('p').click(function(e) {console.log('inner');// e.stopPropagation();//阻止了事件冒泡,但不会阻击默认行为('inner',a链接有效)// return false;//阻止了事件冒泡,也阻止了默认行为('inner',a链接无效)//e.preventDefault(); //不阻击事件冒泡,但阻击默认行为('inner outer',a链接无效)});});
e.stopPropagation()相比较最合适

0 0
原创粉丝点击