添加和删除本机js事件的封装
AttachEvent和disconnectevent用于在IE浏览器中添加或删除事件。AddEventListener和removeEventListener在其他标准浏览器中使用。下面封装了事件的添加和删除。直接看代码!
/*** @description事件绑定兼容所有浏览器* @param target*事件触发器对象* @param type* event * @param func*事件处理程序*/Func bind(target,type,Func) {if (target。addevent listener){//不是ie和ie9target。addeventlistener(类型,func,false);} else if(target . attachevent){//ie6到ie8 target.attachevent ('on '类型,func);} else { target[' on ' type]=func;//ie5}}/*** @description事件移除,兼容所有浏览器* @param target*事件触发器对象* @param type*事件* @param func*事件处理程序*/func unbind(target,type,func){ if(target . removeeventlistener){ target . removeeventlistener(type,func,false);} else if(target . discoverent){ target . discoverent(' on '类型,func);} else { target[' on ' type]=null;}}关于addEventListener第三个参数含义的其他补充。
AddEventListener的第三个参数。
在W3C DOM中用来添加触发事件的函数叫做AddEventListener。然而,我从来不知道这个函数的第三个参数是干什么用的。我总是随便设定,没发现有什么区别。前两天看了javascript上的ppk终于看到了解释。至于很久以前就存在的DOM的标准文档,我其实根本没有去寻找这个参数的信息。
此参数称为useCapture,它是一个布尔值,即true或false。如果发送true,浏览器将使用捕获模式;如果为false,则为Bubbling,这只会在特定条件下产生影响。通常建议是假的。但是如果会影响,目标元素有祖先元素,也有相同的事件对应函数。我想看图片会更清楚。
该示例有一个包含两层的div框。
如图所示,我的例子有两层div元素,它们都设置了click事件。一般来说,如果我点击内层的蓝色元素,不仅会触发蓝色元素的点击事件,还会同时触发红色元素的点击事件,此时参数useCapture控制两个点击事件的顺序。如果为false,则使用冒泡,这是一个由内而外的过程,所以会先执行蓝色元素的click事件,再执行红色元素的click事件。如果是真的,那就是俘获。与冒泡相反,它会在蓝色元素的点击事件之前执行红色元素的点击事件。附上两个例子,捕捉和冒泡。这两个文件唯一的区别就是参数不同,可以发现事件的顺序也不同。
如果不同层的元素使用不同的useCapture呢?也就是说,它将寻找要从最外面的元素捕获到目标元素的事件集,然后在到达目标元素以执行目标元素的事件后,找到寻找设置为冒泡的事件的原始方式。
版权声明:添加和删除本机js事件的封装是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。