阻止默认事件,事件委托和周期

事件周期

  1. 事件捕获

    dom对象从最外层开始,逐层向下记录每一个dom对象上有没有绑定该事件,如果有记录下来

    执行顺序:从外层向内层 直到目标元素截止

  2. 事件目标 事件触发

    目标元素的事件触发

  3. 事件冒泡

    从目标元素开始,逐层向上冒泡触发(捕获阶段记录的绑定的事件)

    执行顺序:由内向外

1,当祖先元素和后代元素都绑定的相同的事件时,后代元素的事件触发,祖先的元素的事件也会触发

2,祖先元素的事件,后代元素也可以触发(后代元素没有绑定该事件)

事件监听:

el.addEventListener(‘事件名‘,fn[,true/false]);

第三个:是否在捕获阶段就提前触发 默认是false

如何阻止事件冒泡

dom标准:    事件对象下调用一个方法就可以阻止    e.stopPropagation()ie下    e.cancelBubble = true;

    兼容性写法:        if(e.stopPropagation){            e.stopPropagation()        }else{            e.cancelBubble = true;        }    三目        e.stopPropagation?e.stopPropagation():e.cancelBubble = true;    try..catch()        try{            e.stopPropagation();        }catch(){            e.cancelBubble = true;        }

阻止默认事件

e.preventDefault()

事件委托

原理:利用事件冒泡,将子元素执行执行的事件,添加到父元素上,委托父元素执行

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style>            ul{                border:1px solid #000000;            }            li{                height:30px;                background: lightcoral;                margin-top:10px;                width:200px;            }        </style>    </head>    <body>        <ul id="list">            <li>1</li>        </ul>        <script>            var arr=[1,2,3,4,5];            var arr2=["a","b","c",‘d‘,‘e‘];            var list = document.getElementById("list");            var str = "";            for(var i=0;i<arr.length;i++){                str += "<li index="+i+">"+arr[i]+"</li>"            }            console.log(str);            list.innerHTML = str;            //获取 li            list.onclick = function(ev){                var e =ev||event;                var target = e.target||e.srcElement;

                if( target.nodeName == ‘LI‘ ){                    var index =parseInt(target.getAttribute(‘index‘));                    alert(arr2[index]);                }            }        </script>    </body></html>?

如何获取目标元素

target属性 保存了目标元素 DOM标准

srcElement属性 IE

兼容: var target = e.target || e.srcElement;

原文地址:https://www.cnblogs.com/cxf1214/p/11432389.html

时间: 2024-10-11 17:34:36

阻止默认事件,事件委托和周期的相关文章

阻止默认/冒泡事件(兼容ie)

(1) 阻止默认事件 function(e){ if(e && e.preventDefault){ e.preventDefault(); }else{ //IE window.event.returnValue = false; } } (2) 阻止冒泡事件 function(e){ if(e && e.stopPropagation){ e.stopPropagation(); }else{ //IE window.event.cancleBubble = true;

阻止默认滚轮事件

; !function () { var keys = { 37: 1, 38: 1, 39: 1, 40: 1 }; function preventDefault(e) { e = e || window.event; if (e.preventDefault) e.preventDefault(); e.returnValue = false; } function preventDefaultForScrollKeys(e) { if (keys[e.keyCode]) { preven

阻止默认事件发生的方法

在事件处理函数中,添加return false; 标准浏览器中用的是 事件对象.preventDefault() IE低版本浏览器的写法:window.event.returnValue = false; 兼容各种浏览器的写法: if(evt.preventDefault) { evt.preventDefault(); //标准浏览器的阻止默认事件的写法 } else { evt.returnValue = false; //IE低版本浏览器的写法 } 3 超链接a,除了具有以上两种阻止默认事

阻止右键菜单(阻止默认事件)&amp;&amp;跟随鼠标移动(大图展示)&amp;&amp;自定义右键菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

阻止默认事件event.preventDefault();

阻止浏览器默认事件.什么是默认事件,例如浏览器默认右键菜单.a标签默认连接跳转...,如何阻止呢? Firefox中,event必须作为参数传入.  IE中,event是window对象的属性. event.preventDefault();方法用于取消默认事件,但是不兼容IE,在IE下,要用event.returnValue=false;来处理. document.oncontextmenu=function (ev) { var oEvent=ev||event; if (oEvent.pr

javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 冒泡篇: 先来看一段实例: js: var $input = document.getElementsByTagName("input")[0]; var $div = document.getElementsByTagName("div")[0]; var $body = document.getElementsByTagName("

阻止默认事件

阻止默认事件的代码是什么样子的呢? $("a").click(function(event){ event.preventDefault(); }); 类似于这种  但是这个是jquery的写法   js的和这个一样  最重要的是 函数中加了一个event   然后 event.preventDefault();  这行代码  那么他们有什么用呢    看上边代码中你就知道   如果你的body中有一个a标签 并且你的a标签是有链接的  那么这个时候你就会发现 无法跳转  对 就是无法

DOM2级事件对象、添加事件、阻止默认事件、阻止冒泡事件、获取事件对象目标的兼容处理

事件对象——兼容处理 1 /* 2 * 功能: 事件对象兼容 3 * 参数: 表示常规浏览器的事件对象e 4 */ 5 function getEvent(e) { 6 7 // 如果存在e存在,直接返回,否则返回window.event 8 return e || window.event; 9 } 获取事件所对应的目标——兼容处理 1 /* 2 3 * 功能: 获取事件所对应的目标 4 5 * 参数: 表示常规浏览器的事件对象e 6 7 */ 8 9 function getTargetBy

锋利的jQuery-4--阻止事件冒泡和阻止默认行为

阻止事件冒泡: 如果嵌套元素分别有自己的click事件,当点击内层元素时外层元素的事件也会被触发. $("span").bind("click", function(event){ //代码 event.stopPropagation(); //通过bind创建的事件对象event来执行 } ); 阻止默认行为: 网页中的默认行为,例如链接跳转和form提交,可以通过preventDefault()方法来阻止. $("#submit").bind