外掛 - 入門
可以通過新增其原型來擴充套件 jQuery API。例如,現有的 API 已經有很多可用的功能,如 .hide()
,.fadeIn()
,.hasClass()
等。
jQuery 原型通過 $.fn
公開,原始碼包含該行
jQuery.fn = jQuery.prototype
向這個原型新增函式將允許從任何構造的 jQuery 物件呼叫這些函式(這是每次呼叫 jQuery 時隱式完成的,或者如果你願意,每次呼叫$)。
構造的 jQuery 物件將根據傳遞給它的選擇器儲存一個內部元素陣列。例如,$('.active')
將構建一個 jQuery 物件,該物件在呼叫時儲存具有活動類的元素(例如,這不是一組實時元素)。
外掛函式內部的 this
值將引用構造的 jQuery 物件。結果,this
用於表示匹配的集合。
基本外掛 :
$.fn.highlight = function() {
this.css({ background: "yellow" });
};
// Use example:
$("span").highlight();
可連結性和可重用性
與上面的示例不同,jQuery 外掛應該是可連結的。
這意味著可以將多個方法連結到相同的元素集合,例如 $(".warn").append("WARNING! ").css({color:"red"})
(請參閱我們如何在 .append()
之後使用 .css()
方法,這兩種方法都適用於相同的 .warn
集合)
允許一個人在不同的集合上使用相同的外掛,通過不同的自定義選項在自定義/可重用性中起著重要作用 ****
(function($) {
$.fn.highlight = function( custom ) {
// Default settings
var settings = $.extend({
color : "", // Default to current text color
background : "yellow" // Default to yellow background
}, custom);
return this.css({ // `return this` maintains method chainability
color : settings.color,
backgroundColor : settings.background
});
};
}( jQuery ));
// Use Default settings
$("span").highlight(); // you can chain other methods
// Use Custom settings
$("span").highlight({
background: "#f00",
color: "white"
});
自由
以上示例在理解基本外掛建立的範圍內。請記住,不要將使用者限制為一組有限的自定義選項。
比如說你想要構建一個 .highlight()
外掛,你可以在其中傳遞一個所需的文字字串,該字串將被突出顯示並允許最大的樣式自由:
//...
// Default settings
var settings = $.extend({
text : "", // text to highlight
class : "highlight" // reference to CSS class
}, custom);
return this.each(function() {
// your word highlighting logic here
});
//...
使用者現在可以傳遞所需的**文字,**並通過使用自定義 CSS 類完全控制新增的樣式:
$("#content").highlight({
text : "hello",
class : "makeYellowBig"
});