Query編寫外掛的兩種方法
1.新增jQuery物件級的外掛,是給jQuery類新增方法
寫法:
;(function($){
$.fn.extend({
"函式名":function(自定義引數){
//這裡寫外掛程式碼
}
});
})(jQuery);
或者
$.fn.函式名=function(自定義引數){
呼叫方法:$("#id").函式名(引數);
2.jQuery類級別的外掛,相當於新增靜態方法
$.extend({
$.函式名=function(自定義引數){
呼叫方法:$.函式名(引數);
jquery外掛的種類:
1.物件級別的外掛開發,即給jQuery物件新增方法,封裝物件方法的外掛,如:parent()、appendTo()
2.一種是類級別的外掛開發,即給jQuery新增新的全域性函式,相當於給jQuery類本身新增方法,jQuery的全域性函式就是屬於jQuery命 名空間的函式,封裝全域性函式的外掛
3.選擇器外掛
jQuery外掛機制
jQuery為開發外掛提拱了兩個方法,分別是:
jQuery.fn.extend(object); 給jQuery物件新增方法。
jQuery.extend(object); 為擴充套件jQuery類本身.為類新增新的方法,可以理解為新增靜態方法。
這兩個方法都接受一個引數,型別為Object,Object對應的"名/值對"分別代表"函式或方法體/函式主體"。
fn 是什麼東西呢?
檢視jQuery程式碼,就不難發現:
jQuery.fn = jQuery.prototype = { init: function( selector, context ) {//.... //...... };
原來 jQuery.fn = jQuery.prototype.對prototype肯定不會陌生啦。雖然javascript沒有明確的類的概念,但是用類來理解它,會更方便。jQuery便是一個封裝得非常好的類,比如 我們用 語句 $("#btn1") 會生成一個 jQuery類的例項。
jQuery.fn.extend(object), 對jQuery.prototype進行擴充套件,就是為jQuery類新增“成員函式”。jQuery類的例項可以使用這個“成員函式”。即:$("#id").object();
jQuery.extend()方法除了可以擴充套件jQuery物件外,還可以擴充套件已有的Object物件,經常被用於設定外掛方法的一系列預設引數,可以很方便的用傳入的引數來覆蓋預設值
var settions ={validate:false,limit:5,name="foo"};
var options ={validate:true,name="bar"};
var newOptions=jQuery.extend(settings,options);
結果為:
newOptions = {validate:true,limit:5,name="bar"};
function foo(options){
options = jQuery.extend({
name="bar",
length:5,
dataType="xml" /*預設引數*/
},options /*options 為傳遞的引數*/
);
如果使用者呼叫foo()方法的時候,在傳遞的引數options物件中設定了相應的值,
那麼就使用設定的值,否則使用預設值,呼叫方法:
foo({name:"a",length:4,dataType:"json"});
foo({name:"a"});
foo();
編寫jQuery外掛
封裝jQuery對你方法的外掛,首先需要在javaScript檔案裡搭好框架,程式碼如下:
由於是對jQuery物件的方法擴充套件,因此採用擴充套件第1類(封裝物件方法)外掛的方法jQuery.fn.extend()來編寫
"color":function(value){
$.fn.color=function(value){
這裡的方法提供一個引數value,如果呼叫方法時傳入value,那麼就用這個值來設定字型顏色,否則就是獲取匹配無此的字型顏色的值
return this.css("color",value);
外掛內部的this指向的是jQuery物件,而非普通的DOM物件。接下來注意的是,外掛如果不需要返回字串之類的特定值,應當使其具有可連結性。
為此,直接返回這個this這個物件,由於css()方法也會返回呼叫它的物件,即此外的this,因此可以將程式碼寫成上面的形式;
呼叫時可直接寫成:$("div").color("red");
另外如果要定義一組外掛,可以使用如下所示寫法:
},
"border":function(value){
"background":function(value){
2.封裝全域性函式的外掛
這類外掛是在jQuery名稱空間內部新增一個函式。這類外掛很簡單,只是普通的函式,沒有特別需要注意的地方。
例如新增兩個函式,用於去除左側和右側的空格。
首先構建一個Object物件,把函式名和函式都放進去,其中的名/值對分別為函式名和函式主體
然後利用jQuery.extend()方法直接對jQuery物件進行擴充套件
jQuery程式碼如下:
ltrim:function(text){
return (text||"").replace(/^\s+g,"");
rtrim:function(text){
return (text||"").replace(/\s+$/g,"");
$.ltrim=function(text){
$.rtrim=function(text){
*(text||"")部分是用於防止傳遞進來的text這個字串變數處於未定義的特殊狀態,如果text是undeined,則返回字串"",否則返回字串text。
這個處理是為了保證接下來的字串替換方法replace()方法不會出錯
*運用了正則表示式替換首末的空格
呼叫函式:
$("trimTest").val(
jQuery.trim(" test ")+"\n"+
jQuery.ltrim(" test ")+"\n"+
jQuery.rtrim(" test ")
3.自定義選擇器
Query編寫外掛的兩種方法
1.新增jQuery物件級的外掛,是給jQuery類新增方法
寫法:
;(function($){
$.fn.extend({
"函式名":function(自定義引數){
//這裡寫外掛程式碼
}
});
})(jQuery);
或者
;(function($){
$.fn.函式名=function(自定義引數){
//這裡寫外掛程式碼
}
})(jQuery);
呼叫方法:$("#id").函式名(引數);
2.jQuery類級別的外掛,相當於新增靜態方法
;(function($){
$.extend({
"函式名":function(自定義引數){
//這裡寫外掛程式碼
}
});
})(jQuery);
或者
;(function($){
$.函式名=function(自定義引數){
//這裡寫外掛程式碼
}
})(jQuery);
呼叫方法:$.函式名(引數);
jquery外掛的種類:
1.物件級別的外掛開發,即給jQuery物件新增方法,封裝物件方法的外掛,如:parent()、appendTo()
2.一種是類級別的外掛開發,即給jQuery新增新的全域性函式,相當於給jQuery類本身新增方法,jQuery的全域性函式就是屬於jQuery命 名空間的函式,封裝全域性函式的外掛
3.選擇器外掛
jQuery外掛機制
jQuery為開發外掛提拱了兩個方法,分別是:
jQuery.fn.extend(object); 給jQuery物件新增方法。
jQuery.extend(object); 為擴充套件jQuery類本身.為類新增新的方法,可以理解為新增靜態方法。
這兩個方法都接受一個引數,型別為Object,Object對應的"名/值對"分別代表"函式或方法體/函式主體"。
fn 是什麼東西呢?
檢視jQuery程式碼,就不難發現:
jQuery.fn = jQuery.prototype = { init: function( selector, context ) {//.... //...... };
原來 jQuery.fn = jQuery.prototype.對prototype肯定不會陌生啦。雖然javascript沒有明確的類的概念,但是用類來理解它,會更方便。jQuery便是一個封裝得非常好的類,比如 我們用 語句 $("#btn1") 會生成一個 jQuery類的例項。
jQuery.fn.extend(object), 對jQuery.prototype進行擴充套件,就是為jQuery類新增“成員函式”。jQuery類的例項可以使用這個“成員函式”。即:$("#id").object();
jQuery.extend()方法除了可以擴充套件jQuery物件外,還可以擴充套件已有的Object物件,經常被用於設定外掛方法的一系列預設引數,可以很方便的用傳入的引數來覆蓋預設值
var settions ={validate:false,limit:5,name="foo"};
var options ={validate:true,name="bar"};
var newOptions=jQuery.extend(settings,options);
結果為:
newOptions = {validate:true,limit:5,name="bar"};
function foo(options){
options = jQuery.extend({
name="bar",
length:5,
dataType="xml" /*預設引數*/
},options /*options 為傳遞的引數*/
);
}
如果使用者呼叫foo()方法的時候,在傳遞的引數options物件中設定了相應的值,
那麼就使用設定的值,否則使用預設值,呼叫方法:
foo({name:"a",length:4,dataType:"json"});
foo({name:"a"});
foo();
編寫jQuery外掛
封裝jQuery對你方法的外掛,首先需要在javaScript檔案裡搭好框架,程式碼如下:
;(function($){
//這裡寫外掛程式碼
})(jQuery);
1.物件級別的外掛開發,即給jQuery物件新增方法,封裝物件方法的外掛,如:parent()、appendTo()
由於是對jQuery物件的方法擴充套件,因此採用擴充套件第1類(封裝物件方法)外掛的方法jQuery.fn.extend()來編寫
;(function($){
$.fn.extend({
"color":function(value){
//這裡寫外掛程式碼
}
});
})(jQuery);
或者
;(function($){
$.fn.color=function(value){
//這裡寫外掛程式碼
}
})(jQuery);
這裡的方法提供一個引數value,如果呼叫方法時傳入value,那麼就用這個值來設定字型顏色,否則就是獲取匹配無此的字型顏色的值
;(function($){
$.fn.extend({
"color":function(value){
return this.css("color",value);
}
});
})(jQuery);
外掛內部的this指向的是jQuery物件,而非普通的DOM物件。接下來注意的是,外掛如果不需要返回字串之類的特定值,應當使其具有可連結性。
為此,直接返回這個this這個物件,由於css()方法也會返回呼叫它的物件,即此外的this,因此可以將程式碼寫成上面的形式;
呼叫時可直接寫成:$("div").color("red");
另外如果要定義一組外掛,可以使用如下所示寫法:
;(function($){
$.fn.extend({
"color":function(value){
//這裡寫外掛程式碼
},
"border":function(value){
//這裡寫外掛程式碼
},
"background":function(value){
//這裡寫外掛程式碼
}
});
})(jQuery);
2.封裝全域性函式的外掛
這類外掛是在jQuery名稱空間內部新增一個函式。這類外掛很簡單,只是普通的函式,沒有特別需要注意的地方。
例如新增兩個函式,用於去除左側和右側的空格。
首先構建一個Object物件,把函式名和函式都放進去,其中的名/值對分別為函式名和函式主體
然後利用jQuery.extend()方法直接對jQuery物件進行擴充套件
jQuery程式碼如下:
;(function($){
$.extend({
ltrim:function(text){
return (text||"").replace(/^\s+g,"");
},
rtrim:function(text){
return (text||"").replace(/\s+$/g,"");
}
});
})(jQuery);
或者
;(function($){
$.ltrim=function(text){
return (text||"").replace(/^\s+g,"");
},
$.rtrim=function(text){
return (text||"").replace(/\s+$/g,"");
}
})(jQuery);
*(text||"")部分是用於防止傳遞進來的text這個字串變數處於未定義的特殊狀態,如果text是undeined,則返回字串"",否則返回字串text。
這個處理是為了保證接下來的字串替換方法replace()方法不會出錯
*運用了正則表示式替換首末的空格
呼叫函式:
$("trimTest").val(
jQuery.trim(" test ")+"\n"+
jQuery.ltrim(" test ")+"\n"+
jQuery.rtrim(" test ")
);
3.自定義選擇器