JS註冊/移除事件處理常式(ExtJS應用程式設計實戰)

來源:互聯網
上載者:User

在設計ExtJS應用程式時最常做的事情就是註冊事件處理常式,因為在ExtJS的世界裡,幾乎完全由時間組成。因此,ExtJS的設計者使註冊事件變得非常容易(同時還提供了非常不容易的方式任你選擇)——on/un,也就是上與下兩種方式,或是addListener與removeListener,Element的所有子類都可以使用。例如有一個<div/>希望在使用者按下時能夠給予簡單的反饋:
<divid="happyDiv"class="happyStyle"/>
如何替這個<div/>註冊按一下滑鼠事件呢?首先必須取得這個div的Element執行個體:
varhappyDiv=Ext.get('happyDiv');
然後是定義事件處理常式:
複製代碼 代碼如下:
varclickHandler=function(event,eventTarget){
Ext.MessageBox.alert("Click","Youclicked:"+eventTarget.id);
}

再用on()將事件處理函數與Element執行個體串連起來:
複製代碼 代碼如下:
happyDiv.on('click',clickHandler);

程式執行時,單擊<div/>會出現圖3-15所示的結果。
很簡單,對吧?樣本檔案為ch03/event_demo.html。如果要移除這個事件處理常式,只需要把on()改為un()即可。移除時沒有對應click事件的事件處理常式也沒有關係,底層的EventManager會自行判斷。事件處理常式被調用時會接收三個參數——event、eventTarget和optionObj,樣本中只用到兩個,第三個參數會在討論EventManager時加以說明。這裡先將焦點放在event與eventTarget上,event的類型是Ext.Event,eventTarget則是HTML元素。瀏覽器在使用者按下<div/>時觸發click事件並且調用clickHanlder(),對於clickHanlder()而言,接收到的event就是瀏覽器觸發的click事件。evnetTarget就是事件目標,也就是<div/>,eventTarget.id的值就是“happyDiv”。至於事件的根類,應該去哪裡尋找呢?答案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.