您好,欢迎访问一九零五行业门户网

浅谈javascript事件取消和阻止冒泡

取消默认操作
w3c的方法是e.preventdefault(),ie则是使用e.returnvalue = false;
在支持addeventlistener()的浏览器中,也能通过调用时间对象的preventdefault()方法取消时间的默认操作。不过,在ie9之前的ie中,可以通过设置事件对象的returnvalue属性为false来达到同样的效果。下面的代码假设一个事件处理程序,它使用全部的三种取消技术:
function cancelhandler(event){ var event = event || window.event; //用于ie if(event.preventdefault) event.preventdefault(); //标准技术 if(event.returnvalue) event.returnvalue = false; //ie return false; //用于处理使用对象属性注册的处理程序}
当前的dom事件模型草案定义了event对象属性defaultprevented。
return false
javascript的return false只会阻止默认行为,而是用jquery的话则既阻止默认行为又防止对象冒泡。
代码如下:
var a = document.getelementbyid("testb");a.onclick = function(){return false;};
阻止冒泡
w3c的方法是e.stoppropagation(),ie则是使用e.cancelbubble = true
在支持addeventlistener()的浏览器中,可以调用事件对象的一个stoppropagation()方法已阻止事件的继续传播。如果在同一对象上定义了其他处理程序,剩下的处理程序将依旧被调用,但调用stoppropagation()方法可以在事件传播期间的任何时间调用,它能工作在捕获阶段、事件目标本身中和冒泡阶段。
ie9之前的ie不支持stoppropagation()方法。相反,ie事件对象有一个canclebubble属性,设置这个属性为true能阻止事件进一步传播。(ie8及之前版本不支持事件传播的捕获阶段,所以冒泡是唯一待取消的事件传播。)
当前的dom事件规范草案在event对象上定义了另一个方法,命名为stopimmediatepropagation()。类似stoppropagation(),这个方法组织了任何其他对象的事件传播,但也阻止了在相同对象上注册的任何其他事件处理程序的调用。
代码如下:
function stophandler(event) window.event?window.event.cancelbubble=true:event.stoppropagation();}
以上所述上就是本文的全部内容了,希望大家能够喜欢。
更多相关教程请访问 javascript视频教程
其它类似信息

推荐信息