使用jQuery在javascript中自定義事件

流火行者發表於2015-04-11

  js中的自定義事件有attachEvent,addEventListener等等好多種,往往受困於瀏覽器相容,而且程式碼寫起來也相當麻煩。jQuery為我們解決了這個問題,幾行程式碼就可以很好的實現事件的各種傳遞。

  例如,我要點選一個button,現在要將這個點選事件丟擲來,從其他任何想要的地方去接收;

這個是button

<button name="btn" onclick="clickbtn()">按鈕</button>

 js:

1 var btn=$("button");
2 btn.bind("evtClick",function(evt,v1,v2){alert("success:"+v1+v2);});
3 function clickbtn(){    
4     btn.trigger("evtClick",["value1","value2"]);
5 }

第一行,通過jQuery獲得這個dom元素物件
第二行,新增一個事件監聽evtClick,並對其實現處理方法

第三行,在clickbtn中新增事件觸發,事件的名字叫做“evtClick”,並且傳遞一個陣列存放所有的傳遞的引數,第二行,事件處理部分就按照這個傳遞的規則實現

 

幾行程式碼就實現了事件丟擲機制。當然,這樣寫或許再少一行程式碼:

1 $("button").bind("evtClick",function(evt,v1,v2){alert("success:"+v1+v2);});
2 function clickbtn(){    
3     $("button");.trigger("evtClick",["value1","value2"]);
4 }

 迴圈建立多個div,丟擲事件到外部物件:

 1      for (var i=0; i < 10; i++) {
 2          var myJimmy = new Jimmy(1,"www.bai1du.com"+i,"jimmychu");
 3         var btn=myJimmy.createButton();
 4         btn.type="button";
 5         btn.value="按鈕"+i;
 6         body.appendChild(btn);
 7         var btnJQuery=jQuery(btn);//所有需要使用jquery的dom必須要用jQuery包裝起來
 8         (function(btn,obj){
 9             btn.click(function(){
10                 btn.trigger("evtClick",[obj.url]);
11             });
12         })(btnJQuery,myJimmy);
13         btnJQuery.bind("evtClick",function(evt,v1){alert(v1);});//可以寫到外部呼叫該物件的類裡邊,實現事件的傳遞
14     }

 注意:jQuery中事件名稱不能與函式方法名稱相同,如果相同則不能進入方法

如上述觸發的事件為“evtClick”,不能有如下的函式

function evtClick(){
    //something      
}

 

 

  

相關文章