说说handleEvent这个东东
2013-09-24 16:00
141 查看
原文链接:http://www.cnblogs.com/qgd87/p/3337127.html
大家知道,原生的javascript绑定事件方法 :如下
1 <div id="handleEvent" style="width:200px;height:100px; border:solid 1px #ccc;">handleEvent 测试</div>
1 var handleEvents = document.getElementById("handleEvent"); 2 var callback = function(){ alert("this is a test!");} 3 handleEvents.addEventListener('click', callback, false);
今天发现addEventListener 的第二个参数除了可以传入函数外 还可以传入一个对象,
handleEvents.addEventListener('click', this, false);
事件会自动在传入对象中寻找handleEvent方法,也就是 this.handleEvent 举个例子 :
var obj = { handleEvent: function() { alert(this.dude); }, dude: "holla" }; element.addEventListener("click", obj, false);
var obj = { init: function() { document.getElementById("btn").addEventListener("click", this, false); document.getElementById("btn").addEventListener("touchstart", this, false); }, handleEvent: function(e) { switch(e.type) { case "click": this.button(); break; case "touchstart": this.button(); break; } }, dude: "holla", button: function() { alert(this.dude); } }; obj.init();
changeHandleEvent: function(evt) { this._handleEvent = this.handleEvent; this.handleEvent = function(e) { var t = evt.target; if (t.id === "btn") { } else if(t.id === "btn3") { this.revertHandleEvent(); } } }
function on(el, evt, fn, bubble) { if("addEventListener" in el) { try { el.addEventListener(evt, fn, bubble); } catch(e) { if(typeof fn == "object" && fn.handleEvent) { el.addEventListener(evt, function(e){ fn.handleEvent.call(fn,e); }, bubble); } else { throw e; } } } else if("attachEvent" in el) { if(typeof fn == "object" && fn.handleEvent) { el.attachEvent("on" + evt, function(){ fn.handleEvent.call(fn); }); } else { el.attachEvent("on" + evt, fn); } } }
这样,在 el 触发event事件后,调用的是handleEvent方法,注意这里面的 this 是指向对象本身 (即 this ==obj //true),这个我们调用对象里面的方法提供极大的便利!而普通的函数,this传入函数里面的this 是指向事件的,因事件类型不同而不同,无法定位到this到底指向哪里。
参考:http://www.thecssninja.com/javascript/handleevent
转载于:https://www.cnblogs.com/qgd87/p/3337127.html
相关文章推荐
- 说说Unicode这个东东!
- HandleExternalEventActivity
- 说说在线旅游这个眼看创业者变“高富帅”的一年
- 线程同步 - EventWaitHandle & AutoResetEvent & ManualResetEvent
- 大家用Google是否也会经常打不开搜索结果?分享一个好东东吧,可以解决这个问题
- wf HandleExternalEventActivity
- [.NET] Handle event for WPF
- 通过操作系统的进程ID,查询sql_id及哪个主机执行的这个东东
- 今天弄了twitter这个鸟东东,并注册了跟gmail同名的用户名
- 说说createTexturedQuadGeometry这个函数
- zoj 3686 简单线段树更新 好久没写这个东东了!!!
- wf HandlExternalEvent传递参数到自定义属性中
- 说说WaitForSingleObject可以等待的HANDLE
- 在第三版和第五版上分别响应CEikEdwin的HandlePointerEventL事件
- addEventListener 传入带 handleEvent 的对象
- Handle URL anchor change event in js 监控地址栏里面的#后面
- 说说这个暑假的事儿~
- 给你说说CRT/LCD刷新率/垂直同步,这个一直没有被说清楚的问题
- wf HandleExternalEventActivity
- 在网上下的魔塔代码 用VS出现 无法打开包括文件:“graphics.h”: No such file or directory 请问如何解决 是库里面没有这个东东吗?