資源描述:
《jquery插件開發(fā)全解析》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、jQuery插件開發(fā)全解析jQuery插件的開發(fā)包括兩種:一種是類級別的插件開發(fā),即給jQuery添加新的全局函數(shù),相當于給jQuery類本身添加方法。jQuery的全局兩數(shù)就是屬于jQuery命名空間的函數(shù),另一種是對象級別的插件開發(fā),即給jQuery對象添加方法。下面就兩種函數(shù)的開發(fā)做詳細的說明。1、類級別的插件開發(fā)類級別的插件開發(fā)最肓接的理解就是給jQuery類添加類方法,可以理解為添加靜態(tài)方法。典型的例子就是$.AJAX()這個函數(shù),將函數(shù)定義于jQuery的命名空間中。關于類級別的插件開發(fā)可以采用如下兒種形式進行擴展:1.1添加一個新的全
2、局函數(shù)添加一個全局兩數(shù),我們只需如卜-定義:Java代碼1jQuery.foo=function(){2alert('Thisisatest.Thisisonlyatest.*);3};1.2增加多個全局函數(shù)添加多個全局函數(shù),可采用如下定義:Java代碼4jQuery.foo=function(){5alertfThisisatest.Thisisonlyatest.*);6};7jQuery.bar=function(param){8alert('Thisfunctiontakesaparameter,whichis+param+9};10調用時
3、和一個函數(shù)的一樣的:jQuery.foo();jQuery.ba「();或^S.fooOjS.barCbar*);1.3使用jQuery.extend(object);Java代碼1jQuery.extend({2foo:function(){3alert(*Thisisatest.Thisisonlyatest.1);4},5bar:function(param){6alertCThisfunctiontakesaparameter,whichis111+param+H7);7}8});1.4使用命名空間雖然在jQuery命名空間中,我們禁止使用
4、了大量的JavaScript函數(shù)名和變量名。但是仍然不町避免某些函數(shù)或變量名將于其他jQuery插件沖突,因此我們習慣將一些方法封裝到另一個口定義的命名空間。Java代碼9jQuery.myPlugin二{10foo:function(){11alert('Thisisatest.Thisisonlyatest.*);12},13bar:function(param){14alertfThisfunctiontakesaparameter,whichis+param+15}16};27采用命名空間的函數(shù)仍然是全局函數(shù),調用時采用的方法:28$.my
5、Plugin.foo();29S.myPlugin.barCbaz1);通過這個技巧(使用獨立的插件名),我們可以避免命名空間內函數(shù)的沖突。2、對象級別的插件開發(fā)對象級別的插件開發(fā)需要如下的兩種形式:、形式1:Java代碼28(function($){29$.fn.extend({30pluginName:function(opt,callback){31//Ourpluginimplementationcodegoeshere.32}33})34})(jQuery);形式2:Java代碼35(function($){36$.fn.pluginNa
6、me=function(){37//Ourpluginimplementationcodegoeshere.38};39})0Query);上而定義了一個jQuery兩數(shù),形參是$,兩數(shù)定義完成Z后,把jQuery這個實參傳遞進去.立即調用執(zhí)行。這樣的好處是,我們在寫jQuery插件時,也可以使丿1]$這個別名,而不會與prototype引起沖突.2.1在JQuery名稱空間下申明一個名字這是一個單一插件的腳本。如果你的腳木中包含多個插件,或者互逆的插件(例如:$.fn.doSomething()和$.fn.undoSomething()),那么你
7、需耍聲明多個函數(shù)名字。但是,通常當我們編'弓一個插件吋,力求僅使用一個名字來包含它的所有內容。我們的示例插件命名為“highlight“Java代碼40$.fn.hilight=function(){41//Ourpluginimplementationcodegoeshere.28};45我們的插件通過這樣被調用:46$C#myDiv?.hilight();但是如果我們需要分解我們的實現(xiàn)代碼為多個函數(shù)該怎么辦?有很多原因:設計上的需要;這樣做更容易或更易讀的實現(xiàn);而R這樣更符合面向對彖。這真是一個麻煩事,把功能實現(xiàn)分解成多個函數(shù)而不增加多余的命名
8、空間。岀于認識到和利用函數(shù)是javascript中最棊木的類對彖,我們可以這樣做。就像其他對彖一樣,函數(shù)可以被指定為屬性。