时间:2021-05-28
特性说明和原理图:
示例代码(ie8-示例不提供)
html代码
<body class="body" > <div class="log"></div> <input type="text" id="inTxt" name="intxt" /><div class="wrap"> <div class="cont"> <button type="button" class="button" id="btn">按钮</button> <select name="stopType" id="stopType"> <option value="1">StopPropagation</option> <option value="2">cancelBubble</option> </select> <button type="button" class="button" id="btnReject">cont阻止捕获或冒泡</button> </div></div></body>层级关系:body->wrap->cont->button,可以对照上面的原理
Js代码
$(function(){ var $log = $('.log'), $wrap = $('.wrap'), $cont = $('.cont'), $btn = document.getElementById('btn'), $stopType = $('#stopType'), $body = $('body'), $inTxt = $('#inTxt'), $btnReject = $('#btnReject'); var ePhase = ["","捕获","目标","冒泡"] var setBorderColor = function( $dom, color, time,event){ $dom = $($dom); $log.html($log.html() + $dom.attr('class') + '[' + ePhase[event.eventPhase] + ']' + '<br/>') var timeIndex = window.setTimeout(function(){ $dom.css({ 'borderColor': color, 'borderWidth': '4px' }); }, time); } //捕获 $body[0].addEventListener('click',function(event){ $log.html($log.html() + "-------------------<br>"); setBorderColor($body,'#0866ff ',0,event); },true); $wrap[0].addEventListener('click',function(event){ setBorderColor($wrap,'yellow',2000,event); },true); $cont[0].addEventListener('click',function(event){ event = event || window.event; if( $stopType.val() == '1' ){ event.stopPropagation(); }else{ event.cancelBubble = true; } setBorderColor($cont,'green',1000,event); },true); $btn.addEventListener('click', function(event){ setBorderColor($btn,'red',0,event); },true); $btnReject[0].addEventListener('click',function(event){ setBorderColor($btnReject,'gray ',0,event); },true); //冒泡 $body[0].addEventListener('click',function(event){ setBorderColor($body,'#0866ff ',0,event); },false); $wrap[0].addEventListener('click',function(event){ setBorderColor($wrap,'yellow',2000,event); },false); $cont[0].addEventListener('click',function(event){ setBorderColor($cont,'green',1000,event); },false); $btn.addEventListener('click', function(event){ setBorderColor($btn,'red',0,event); },false); $btnReject[0].addEventListener('click',function(event){ setBorderColor($btnReject,'gray ',0,event); },false); //阻止默认事件 $inTxt.keypress(function(event){ //event.preventDefault(); window.event.returnValue = false; $body.append( String.fromCharCode( event.keyCode )); }); });效果图
应用场景
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
event.target说明:引发事件的DOM元素。this和event.target的区别js中事件是会冒泡的,所以this是可以变化的,但event.tar
本文实例讲述了JavaScript事件冒泡与事件捕获。分享给大家供大家参考,具体如下:1、事件冒泡在一个对象上触发某类事件,如onclick事件等,在其祖先节点
this和event.target的区别: 1.js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远指向触发事件的DOM
javascript,jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结。事件冒泡是一个从子节点向祖先节点冒泡的过程;事件
描述:防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数。versionadded:1.0event.stopPropagation()我们可