标签:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" id="btn" value="click"/> <script> var btn = document.getElementById(‘btn‘); var event = (function(){ /*定义存储事件处理函数的对象,根据不同的事件名,将事件处理函数存储在对应的数组中*/ var events = { ‘click‘:[], ‘load‘:[] } /*事件处理函数*/ function on(node,type){ /*dom元素+ on+ 事件名= 事件处理函数*/ node[‘on‘+type] = function (e) { /*遍历数组 events[type]*/ for(var i = 0;i < events[type].length;i++){ /*上下文调用events[type][i]函数 返回自定义this 即Dom元素*/ events[type][i].apply(node,[e]); } }; } /*调用*/ on(window,‘load‘); on(btn,‘click‘); return { /*追加事件函数*/ appEvent: function (node,type,fn) { /*判断事件名追加到对应的数组中*/ if(type == ‘click‘){ events[type].push(fn); }else if(type == ‘load‘){ events[type].push(fn); } return this; }, removeEvent: function (node,type,fn) { /*更加事件名遍历数组,在对应的数组中移除事件*/ for(var i = 0;i < events[type].length;i++){ if(events[type][i] === fn){ break; } } if(i != events[type].length){ events[type].splice(i,1); } return this; } } })();/*自调用*/ var o = event; o.appEvent(btn,‘click‘, function () { alert(123) }); var f = function () { alert(‘454545‘); } o.appEvent(btn,‘click‘,f).removeEvent(btn,‘click‘,f); </script> </body> </html>
标签:
原文地址:http://www.cnblogs.com/lcf1314/p/5751575.html