jQuery綁定自定義事件的魔法升級(jí)版
jQuery綁定自定義事件
首先讓我們來(lái)看看jQuery綁定自定義事件的使用方法,你可以使用bind或者live來(lái)訂閱一個(gè)事件(當(dāng)然1.7以后也可以使用on了),代碼如下:
$("#myElement").bind('customEventName',function(e){ ... });
$(".elementsClass").live('customEventName',function(e){ ... });
然后通過(guò)如下方式來(lái)觸發(fā)事件:
$("#myelement").trigger('customEventName');
或者你也可以為自定義事件增加額外的參數(shù),樣例如下:
$("#myelement").bind('customEventName',function(e,data){ if(data.custom) ... });
$("#myelement").trigger('customEventName',{ custom: false });
魔法升級(jí)
所謂魔法升級(jí),其實(shí)是想讓整個(gè)程序所有的自定義事件能夠自動(dòng)注冊(cè)并綁定jQuery上,然后執(zhí)行的時(shí)候,所有注冊(cè)該事件的模塊都會(huì)執(zhí)行。比如模塊User.js里定義的UserUpdate方法和Blogs.js里定義的BlogUpdate方法都定義了在發(fā)布一篇博客的時(shí)候需要執(zhí)行的function函數(shù),整個(gè)時(shí)候我們可以通過(guò)注冊(cè)統(tǒng)一的事件名稱(chēng)(例如BlogAdded)bind到j(luò)Query指定的一個(gè)容器上(例如document)上,然后發(fā)布博客成功以后,執(zhí)行$(document).trigger("BlodAdded")就OK了。
下面我們給個(gè)通用的樣例代碼:
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);
});
})
然后每個(gè)js模塊定義的代碼安裝如下格式:
User= {
AddComplete: function(e, data) {
//...
},
UpdateComplete: function(e, data) {
//...
}
}
這樣,不管在任何地方,如果我們需要的話,就可以使用jQuery的方式來(lái)觸發(fā)我們的事件了:
$(document).trigger("UpdateComplete", data);
通過(guò)這種方法,大家可以發(fā)現(xiàn)一個(gè)模塊的method只能注冊(cè)一個(gè)事件,那如果我們通過(guò)一個(gè)方法來(lái)注冊(cè)多個(gè)事件觸發(fā)的話,可以使用如下方式:
var blogController = {
blogAddOrUpdateComplete: function() {
//...
}
}
blogController.blogAddComplete = blogController.blogUpdateComplete = blogController.blogAddOrUpdateComplete;
最后注意:本文只是展示一個(gè)簡(jiǎn)單的例子,不要混用不同module同一事件名稱(chēng)的用法哦,比如,User.js里的AddComplete和Blog.js里的AddComplete可能根本就沒(méi)有關(guān)系,也就是說(shuō)只處理自己相應(yīng)的邏輯,這時(shí)候,就不應(yīng)該統(tǒng)一處理這個(gè)事件,但如果要檢測(cè)的東西是一樣的話,就可以使用,比如DisableUserComplete,就可以通用,因?yàn)閁ser模塊需要處理禁用賬戶(hù)以后的操作,Blog模塊可能也需要處理禁用賬戶(hù)以后的操作。
以上就是本文的全部?jī)?nèi)容,了解更多jQuery的語(yǔ)法,大家可以查看:《jQuery 1.10.3 在線手冊(cè)》,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery中獲取checkbox選中項(xiàng)等操作及注意事項(xiàng)
今天在做一個(gè)項(xiàng)目功能時(shí)需要顯示checkbox選項(xiàng)來(lái)讓用戶(hù)進(jìn)行選擇,由于前端不是很熟練,所以做了一個(gè)簡(jiǎn)單的Demo,其中遇到一些小問(wèn)題,特記錄下來(lái),希望能幫到遇到類(lèi)似問(wèn)題的同學(xué)們2013-11-11
jQuery實(shí)現(xiàn)form表單序列化轉(zhuǎn)換為json對(duì)象功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)form表單序列化轉(zhuǎn)換為json對(duì)象功能,結(jié)合實(shí)例形式分析了表單數(shù)據(jù)傳輸中使用serializeJson進(jìn)行序列化操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05
jquery模擬進(jìn)度條實(shí)現(xiàn)方法
這篇文章主要介紹了jquery模擬進(jìn)度條的方法,實(shí)例分析了jquery操作頁(yè)面元素樣式實(shí)現(xiàn)頁(yè)面動(dòng)態(tài)效果的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
jquery 實(shí)現(xiàn)京東商城、凡客商城的圖片放大效果
京東商城、凡客商城的圖片放大效果很是吸引人2009-05-05
jquery api參考 visualjquery 中國(guó)線路 速度快
jquery api參考 visualjquery 中國(guó)線路 速度快...2007-11-11
jquery寫(xiě)個(gè)checkbox——類(lèi)似郵箱全選功能
最近在學(xué)習(xí)jquery,今天抽空用jquery寫(xiě)個(gè)checkbox——類(lèi)似郵箱全選功能,感興趣的你可以參考下哈,希望可以幫助到你2013-03-03
asp.net+jquery滾動(dòng)滾動(dòng)條加載數(shù)據(jù)的下拉控件
由于需求需要用到一個(gè)滾動(dòng)滾動(dòng)條加載數(shù)據(jù)的下拉列表(假如數(shù)據(jù)1000條,下拉列表開(kāi)始只顯示100條,當(dāng)用戶(hù)下拉滾到條到最底下時(shí),再加載下一個(gè)100條,如此循環(huán))2010-06-06

