<>强特性说明和原理图:强>
-
<李>标准浏览器和Ie9 +浏览器都支持事件的冒泡和捕获,而IE8——浏览器只支持冒泡李>
<李>标准和Ie9 +浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8——用e.cancelBubble属性来阻冒泡,注意Ie9不支持cancelBubble属性(设置后不生效),但chrome, firefox safari,歌剧,都支持cancelBubble属性。李>
<李> Ie8——用attachEvent为dom元素添加一个事件,但必须在事件名前加上,此类事件只能在元素的冒泡阶段。李>
<李> stopPropagatin()方法用于阻止事件的传播,如果设置在捕获阶段,则目标和冒泡阶段不会被执行;李>
<李> cancelBubble属性只能阻止冒泡阶段,对捕获和目标阶段的事件不能阻止李>
<李> preventDefault()和window.event.returnValue用于标准浏览器和ie9 +,都可以阻止默认事件.ie8——可以用returnValue, preventDefault()。李>
<强>示例代码(ie8 -示例不提供)强>
<强> html代码强>
& lt;身体类=吧硖濉北? & lt; div类="日志"祝辞& lt;/div> & lt;输入类型="文本" id=" inTxt " name=" inTxt "/比; & lt; div类="包装"比; & lt; div类=白狻北? & lt;按钮类型=鞍磁ァ崩?"按钮" id=癰tn祝辞按钮& lt;/button> & lt;选择name=" stopType " id=皊topType”比; & lt;选项值=" https://www.yisu.com/zixun/1 "祝辞StopPropagation & lt;选项值=" https://www.yisu.com/zixun/2 "祝辞cancelBubble & lt;/select> & lt;按钮类型=鞍磁ァ崩?"按钮" id=癰tnReject祝辞cont阻止捕获或冒泡& lt;/button> & lt;/div> & lt;/div> & lt;/body>
层级关系:身体→包装→cont→按钮,可以对照上面的原理
<强> Js代码强>
$(函数(){ 日志=$ var $ (' . log '), 用美元=$ (' .wrap '), 美元续=$ (' .cont '), $ btn=. getelementbyid (btn), 美元stopType=$ (' # stopType '), 身体=美元(身体的), 美元inTxt=$ (' # inTxt '), 美元btnReject=$ (' # btnReject '); var ePhase=["”、“捕获”,“目标”、“冒”泡) var setBorderColor=function (dom美元、颜色、时间、事件){ (dom=$美元dom); (log.html美元log.html () + $ dom.attr(类的)+ ' (' + ePhase(事件。eventPhase) + '] ' + ' & lt; br/祝辞') var timeIndex=window.setTimeout(函数(){ 美元dom.css ({ “borderColor”:颜色, “borderWidth”:“4 px” }); },时间); }//捕获 身体美元[0].addEventListener(“点击”,函数(事件){ (log.html美元log.html () +”- - - - - - - - - - - - - - - - - - & lt; br>”); setBorderColor($身体,# 0866 ff, 0,事件); },真正的); 用美元[0].addEventListener(“点击”,函数(事件){ setBorderColor(用美元,“黄色”,2000年,事件); },真正的); 美元续[0].addEventListener(“点击”,函数(事件){ 事件=事件| | window.event; 如果(stopType.val美元()==' 1 '){ event.stopPropagation (); 其他}{ 事件。cancelBubble=true; } setBorderColor (cont美元,“绿色”,1000年,事件); },真正的); btn美元。addEventListener(“点击”,函数(事件){ setBorderColor (btn美元,“红”,0,); },真正的); 美元btnReject [0] .addEventListener(“点击”,函数(事件){ setBorderColor (btnReject美元,“灰色”,0,); },真正的);//冒泡 身体美元[0].addEventListener(“点击”,函数(事件){ setBorderColor($身体,# 0866 ff, 0,事件); },假); 用美元[0].addEventListener(“点击”,函数(事件){ setBorderColor(用美元,“黄色”,2000年,事件); },假); 美元续[0].addEventListener(“点击”,函数(事件){ setBorderColor (cont美元,“绿色”,1000年,事件); },假); btn美元。addEventListener(“点击”,函数(事件){ setBorderColor (btn美元,“红”,0,); },假); 美元btnReject [0] .addEventListener(“点击”,函数(事件){ setBorderColor (btnReject美元,“灰色”,0,); },假);//阻止默认事件 inTxt.keypress美元(函数(事件){//event.preventDefault (); window.event。returnValue=https://www.yisu.com/zixun/false; 美元的身体。追加(String.fromCharCode(事件。键码); }); }); >之前Javascript事件(事件)的传播与冒泡