測試代碼:
(function(){var p=new PEvent(document);p.click(function() {//alert("單擊");//alert(p.style);var html="";for ( var item in document) {html+=item+':'+document[item]+"\r\n";}//alert(html);});p.dblclick(function() {alert("雙擊");});p.contextmenu(function(event) {try{var x=event.clientX;var y=event.clientY;var menu=g("menu");//判斷座標var width=document.body.clientWidth;var height=document.body.clientHeight;x=(x+menu.clientWidth)>=width?width-menu.clientWidth:x;y=(y+menu.clientHeight)>=height?height-menu.clientHeight:y;//alert("可視高度:"+height+",滑鼠高度:"+y);menu.style.top=y+"px";menu.style.left=x+"px";menu.style.display="block";}catch(e){alert(e);}return false;});function PEvent(dom){this.x=function() {this.style.css=dom.style;}this.click=function(fn){dom.onclick=fn;this.x();}this.dblclick=function(fn){dom.ondblclick=fn;}this.contextmenu=function(fn){dom.oncontextmenu=fn;}this.style=new Po();};function Po() {this.name=new Object();this.id=new Object();this.css=new Object();}})();function g(id){return document.getElementById(id);}
在jquery中,處理事件的時候,都可以匿名方法來寫,例如:
obj.click(function(){
alert("hello");
});
上訴這種形式。
在方法傳遞參數的時候,可以傳遞fun 方法。
調用呢,就可以這樣調用:
this.dblclick=function(fn){dom.ondblclick=fn;}