jQuery自訂綁定的魔法升級版,jquery自訂升級版

來源:互聯網
上載者:User

jQuery自訂綁定的魔法升級版,jquery自訂升級版
jQuery自訂綁定

首先讓我們來看看jQuery的自訂綁定的使用方法,你可以使用bind或者live來訂閱一個事件(當然1.7以後也可以使用on了),代碼如下:

$("#myElement").bind('customEventName',function(e){ ... });$(".elementsClass").live('customEventName',function(e){ ... });

然後通過如下方式來觸發事件:

$("#myelement").trigger('customEventName');


或者你也可以為自訂事件增加額外的參數,範例如下:

$("#myelement").bind('customEventName',function(e,data){ if(data.custom) ... });$("#myelement").trigger('customEventName',{ custom: false });
魔法升級

所謂魔法升級,其實是想讓整個程式所有的自訂事件能夠自動註冊並綁定jQuery上,然後執行的時候,所有註冊該事件的模組都會執行。比如模組User.js裡定義的UserUpdate方法和Blogs.js裡定義的BlogUpdate方法都定義了在發布一篇部落格的時候需要執行的function函數,整個時候我們可以通過註冊統一的事件名稱(例如BlogAdded)bind到jQuery指定的一個容器上(例如document)上,然後發布部落格成功以後,執行$(document).trigger("BlodAdded")就OK了。

下面我們給個通用的範例代碼:

    var components = [User, Blog, Group, Friend, Topic, Photo];      var eventTypes = ["AddComplete", "UpdateComplete", "DeleteComplete", "LockComplete", "UnLockComplete"];      $.each(components, function(i,component) {        $.each(eventTypes, function(i,eventType) {          var handler = component[eventType];          if (handler) $(document).bind(eventType, handler);        });      }) 

然後每個js模組定義的代碼安裝如下格式:

    User= {      AddComplete: function(e, data) {        //...      },      UpdateComplete: function(e, data) {        //...      }    } 

 

這樣,不管在任何地方,如果我們需要的話,就可以使用jQuery的方式來觸發我們的事件了:

$(document).trigger("UpdateComplete", data); 


通過這種方法,大家可以發現一個模組的method只能註冊一個事件,那如果我們通過一個方法來註冊多個事件觸發的話,可以使用如下方式:

    var blogController = {      blogAddOrUpdateComplete: function() {        //...      }    }    blogController.blogAddComplete = blogController.blogUpdateComplete = blogController.blogAddOrUpdateComplete; 

 

最後注意:本文只是展示一個簡單的例子,不要混用不同module同一事件名稱的用法哦,比如,User.js裡的AddComplete和Blog.js裡的AddComplete可能根本就沒有關係,也就是說只處理自己相應的邏輯,這時候,就不應該統一處理這個事件,但如果要檢測的東西是一樣的話,就可以使用,比如DisableUserComplete,就可以通用,因為User模組需要處理禁用賬戶以後的操作,Blog模組可能也需要處理禁用賬戶以後的操作。

著作權聲明:本文為博主http://www.zuiniusn.com原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.