您现在的位置是:影视综艺
js 有没有办法 判断一个dom元素是否已经绑定了某个事件,js 判断是否存有事件 addeventlistener
2020-10-14 06:17影视综艺
简介addEventListener()绑定事件的对象方addEventListener()含有三个参数,件名称,另一个是事件执行的函数,最后一个是事件捕获,,obj.addEventListener(" js 有没有办法 判断一个dom元素是否已经绑定了某个事件...
addEventListener()绑定事件的对象方
addEventListener()含有三个参数,件名称,另一个是事件执行的函数,最后一个是事件捕获,,obj.addEventListener("click",function(){},true/false);这里的事件名称跟直接写的事件名称不一样,在这里前面没有on,还有就是按以往的方法定义事件的话后面的会覆盖掉前面的事件函数,但是按这种方式写的话几个事件函数都会执行,最后是true和false的解释,,事件在执行时都会有俩个流,一个是捕获事件流,另一个是冒泡事件流,进来的事件是捕获事件,出去的事件是冒泡事件,true的话会捕获进来时的,false的话会捕获出去时的,, -下面是更多关于addeventlistener的问答
原生实现判断是否有事件。如果确实需参照代码,另外本代码只使用于调用dom2加载或者移除事件功能,对应dom0类型的没有做测试。
以下代码修改了原生的Element对象,是否需要这样做,请自己酌情处理。
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /** * 此处代码必须放到任何javascript代码之前。另外增加事件只能用addEventListener形式。 */ (function() { Element.prototype.eventListenerList = {}; Element.prototype._addEventListener = Element.prototype.addEventListener; Element.prototype._removeEventListener = Element.prototype.removeEventListener; Element.prototype.addEventListener = function(a,b,c) { this._addEventListener(a,b,c); if(!this.eventListenerList[a]) this.eventListenerList[a] = []; this.eventListenerList[a].push(b); }; Element.prototype.removeEventListener = function(a,b,c){ this._removeEventListener(a, b,c); if(this.eventListenerList[a]){ var arr = this.eventListenerList[a]; for(var i =0;i<arr.length;i++){ if(arr[i].toString() === b.toString()){ this.eventListenerList[a].splice(i,1); } } } } })(); //此后为测试代码。 window.onload = function(){ var dom = document.getElementById("test"); //增加三个监听 dom.addEventListener("click",function(){ console.info("click function"); },false); dom.addEventListener("click",function(){ console.info("click function2"); },false); dom.addEventListener("click",function(){ console.info("click function3"); },false); console.log(dom.eventListenerList["click"].length); //读出监听的方法 var clicks = dom.eventListenerList.click; if(clicks) clicks.forEach(function(f) { console.log("I listen to this function: "+f.toString()); }); //删除监听 dom.removeEventListener("click",function(){ console.info("click function"); },false); console.log(dom.eventListenerList["click"].length); }; </script></head><body> <button id="test" >测试</button></body></html>变量是否为空?是简单变量,还是复合型变量?简单看就只有空字符串,空数组,空对象或者未定义变量。一般的if(a){},空数组就取length属性,空对象就遍历对象。 绑定事 有直接在dom写el.on+type=function(){} 可以通过赋值为null 这种方式可以typeof el.on+type =='function'还有就是addEventListener/attachEvent,就需要用removeEventListener/detachEvent这个就难写了,我觉得如果事件是你自己绑定的,那就在绑定的时候,为元素添加属性标识 本回答被提问者和网友采纳 重新声明一次就好了,比如document. body. on click = functio () {}直接空函数即可
Tags:addeventlistener,js 判断是否存有事件 a
相关文章
随机图文
-
求《赠我予白》的完整版txt百度云资源!,求《赠我予白
yǔ白作者:小八老爷:沈佑白是高傲的,而徐品羽于他的。PS:链出来回答就会被删,但是你是匿名,我加不了... -
美国总统特朗普到底多少岁了?,美国总统特郎普的年龄?
唐纳德·特朗普(Donald Trump),1946年6月14日生于纽约,美国共和党籍政治家、企业家、商人,第45任美国... -
求书:男主占有欲强,对女主很霸道的小说?要有囚禁这
玩宠 (作雨革月)男主彻头彻尾的畜牲他根本不懂什么。用钱势纨绔子弟。他只会威胁,凌辱,性暴力。女主和... -
”流年笑掷 未来可期”这句话是什么意思?,未来可期不
是未来的日子是值得期待的,辜负美好的时光。生活,辛苦与磨砺,都为深刻的体会与印记,苦心励志,心怀感恩...