jQuery開發外掛程式

2021-07-13 05:46:58 字數 1759 閱讀 4743

1.jquery.fn給我們提供了擴充套件開發的介面,原因就是在定義處使用原型鏈的方式,所以修改jquery.fn實際上就是對jquery.prototype的修改。

jquery.fn原始碼如下:

jquery.fn =jquery.prototype = )(jquery);

上面使用this.each()的原因:

this呼叫的時走的這一步:

each: function( callback ) elseelse )(jquery);

//呼叫時可以覆寫預設引數

$("body").myplugin();

使用$.extend()來實現修改settings的原因:

jquery.extend = jquery.fn.extend是為了既能直接通過呼叫jquery類來呼叫,比如$.extend(),又能通過jquery生成的物件呼叫,比如$(「body」).extend()。

jquery.extend = jquery.fn.extend =function() ,

i= 1,

length= arguments.length,

deep= false;

//handle a deep copy situation

if( typeof target === "boolean" ) ;

i++;

//handle case when target is a string or something (possible in deep copy)

if( typeof target !== "object" && !jquery.isfunction( target )) ;

//extend jquery itself if only one argument is passed

if( i === length )

//recurse if we're merging plain objects or arrays

if( deep && copy && ( jquery.isplainobject( copy ) ||

(copyisarray = jquery.isarray( copy ) ) ) ) else ;

//never move original objects, clone them

target[name ] = jquery.extend( deep, clone, copy );

//don't bring in undefined values

}else if ( copy !== undefined )

//return the modified object

returntarget;

綜上所述,如果$.extend(obj1,obj2),則會將obj2的值覆蓋obj1的值,若obj1中不存在這個屬性的話,會直接加到obj1中。

jquery.extend(

}, } // 結果: => }

補:若第乙個引數傳入true,然後後面傳遞兩個物件:

jquery.extend( true,

}, } // 結果:=> }

4.可以使用jquery. data()函式用於在當前jquery物件所匹配的所有元素上訪問資料

5.不要在乙個外掛程式中宣告好幾個$.fn.function_name最容易理解的方法是在外掛程式的這個方法中宣告需要使用的所有屬性和方法。

jQuery 外掛程式開發

一 類級別的外掛程式開發 即給jquery新增新的全域性函式,相當於給jquery類本身新增方法,jquery的全域性函式就是屬於jquery命名空間的函式。1 新增全域性函式 方法一 jquery.onetest function jquery.twotest function 方法二 jquer...

jquery 外掛程式開發

自定義主要通過兩種方式實現 extend fn.extend 呼叫的方法分別是 aa this aa 注意 建立函式時不要放在 function 中,呼叫時候要放在事件裡面 this click function jquery.extend 函式詳解 jquery的extend擴充套件方法 jque...

jquery 外掛程式開發

jquery外掛程式開發一般通過兩種框架方式 一種是在jquery物件上直接定義新成員,形成外掛程式 另一種是封裝完整的外掛程式 然後將jqeury作為引數自身呼叫,達到給jquery物件擴充套件功能目的,形成外掛程式。其實兩種方式都是給jqeury物件擴充套件成員來實現外掛程式功能的,所以本質上功...