平常都會使用網路上所釋出的jQuery plugin,像這樣:
<script src="xxx.js"></script>
如果是自己的功能要一直重複使用的話,做成plugin會比較方便,維護容易,使用上彈性也比較高
最精簡的jQuery plugin主要有兩個部份要處理
1.用jQuery.fn註冊plugin名稱
2.定義回傳function的動作
例如
//定義一個hello plugin
$.fn.hello = function(){
//回傳jQuery each方法,將index和value輸出
return this.each(function(key,value){
alert(key + " " + $(value).html());
});
};
使用
$('li').hello();
加入click事件
//加入click事件
$.fn.hello = function(){
return this.each(function(key,value){
$(this).click(function(){
alert($(this).html());
});
});
};
設計可以自行傳入設定的plugin
//自行設定callback函式
$.fn.hello = function( setting ){
//Default 物件設定
var default_setting = {
callback : function() {
alert('Hello');
}
};
//將setting(使用者輸入的設定)覆蓋到預設設定
var final_settings = $.extend(default_setting, setting);
return this.each(function(key,value){
//呼叫callback
$(this).click(final_settings.callback);
});
};
使用
$('li').hello({
callback:function(){
alert("HAHAHAHA");
}
});
新增參數
//新增輸入參數
$.fn.hello = function( text, setting ){
//Default 設定
text = text || "Hello";
var default_setting = {
//新增bind設定,可自行控制事件
bind:'click',
callback : function() {
alert(text);
}
};
//將setting(使用者輸入的設定)覆蓋到預設設定
var final_settings = $.extend(default_setting, setting);
return this.each(function(key,value){
$(this).on(final_settings.bind, final_settings.callback);
});
};
使用
//將事件改成mouseover,並輸出自訂的文字
$('li').hello("HAHAHA",{bind:'mouseover'});
另外一個簡單的plugin範例
//自製調整css plugin
$.fn.highlight = function( options ) {
var default_options = {
'background':'#000',
'font-size':'10px',
'color':'#FFF',
};
var final_options = $.extend(default_options, options);
return this.css(final_options);
};
使用
$('li').highlight({'font-size':'40px'});