如何阻止事件冒泡和默认事件,阻止事件冒泡和默认事件的方法
内容导航:
一、javascript如何阻止事件冒泡和默认行为
js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容。 复制代码 代码如下: function stopPro(evt){
var e = evt || ; //returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,
//可以取消发生事件的源元素的默认动作。 //?ue = false:fault(); ?ble=true:gation(); }
二、什么是事件冒泡
事件冒泡:点击一个链接,触发绑定在链接上的click事件,进而触发到这元素的click事件事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签。
假设一个元素div,它有一个下级元素p。
元素
这两个元素都绑定了click事件,如果用户点击了p,它在div和p上都触发了click事件,那这两个事件处理程序哪个先执行呢?事件顺序是什么?两种模型以前,netscape和microsoft是不同的实现方式。
netscape中,div先触发,这就叫做事件捕获。
microsoft中,p先触发,这就叫做事件冒泡。
两种事件处理顺序刚好相反。
ie只支持事件冒泡,mozilla, opera 7 和 konqueror两种都支持,旧版本的opera’s 和 icab两种都不支持 。
事件捕获当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发。
事件冒泡当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发。
w3c模型w3c模型是将两者进行中和,在w3c模型中,任何事件发生时,先从顶层开始进行事件捕获,直到事件触发到达了事件源元素。
然后,再从事件源往上进行事件冒泡,直到到达document。
程序员可以自己选择绑定事件时采用事件捕获还是事件冒泡,方法就是绑定事件时通过apeventlistener函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。
stener(‘click’,dosomething2,true)true=捕获false=冒泡传统绑定事件方式在一个支持w3c
dom的浏览器中,像这样一般的绑定事件方式,是采用的事件冒泡方式。
=
dosomething2ie浏览器如上面所说,ie只支持事件冒泡,不支持事件捕获,它也不支持apeventlistener函数,不会用第三个参数来表示是冒泡还是捕获,它提供了另一个函数attachevent。
nt(“onclick”,
dosomething2);附:事件冒泡(的过程):事件从发生的目标(t||)开始,沿着文档逐层向上冒泡,到document为止。
事件的传播是可以阻止的:? 在w3c中,使用stoppropagation()方法? 在ie下设置cancelbubble =
true;在捕获的过程中stoppropagation();后,后面的冒泡过程也不会发生了~3.阻止事件的默认行为,例如click 后的跳转~?
在w3c中,使用preventdefault()方法;? 在ie下设置ue = false;
三、javascript 的事件冒泡如何阻止
答:1、cancelBubble(HTMLDOMEvent对象属性):如果事件句柄想阻止事件传播到包容对象,必须把该属性设为true。2、stopPropagation(HTMLDOMEvent对象方法):终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。3、preventDefault(HTMLDOMEvent对象方法)通知浏览器不要执行与事件关联的默认动作。例子:functionstopBubble(e){if(e&&opPropagation)opPropagation()elsencelBubble=true}把这个stopBubble(e)函数放到你想要的阻止事件冒泡函数里面就可以阻止事件冒泡了。希望能帮助到你。
四、事件捕获和事件冒泡以及如何阻止冒泡事件和默认事件
在 IE 下, 可以用 ble = true 来阻止事件向上冒泡. FireFox 下则可以用 gation() 来阻止事件冒泡.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/114934.html